SlideShare ist ein Scribd-Unternehmen logo
Deploy Magento Shops mit
Capistrano
Roman Hutterer - 2015
CAPISTRANO - MAGENTO
ROMAN HUTTERER
● Selbstständiger Webentwickler
www.multibyte.at
● Senior Developer bei Cyberhouse
www.cyberhouse.at
● Magento Certified Developer
● Webentwickler seit 2005
● Magento-Entwickler seit 2011
● @roman204
● http://github.com/roman204
WARUM EIN DEPLOYMENT TOOL?
● kein direkter Zugang (FTP, SSH, SFTP,...) nötig
● kein „vergessen Hochzuladen“
● keine Änderungen am Server direkt
● schneller Rollback
● wiederkehrende Schritte können automatisiert werden
● clearCache, enableCompiler,...
● Automatisches Testen möglich
● meistens History
● ….
WAS IST CAPISTRANO?
● ein Deployment – Tool
● geschrieben in Ruby
● Open Source
● eine Community Entwicklung
● einfach Erweiterbar und/oder Überschreibbar
● ist Event gesteuert
● leicht zu debuggen
● ...
VORTEILE CAPISTRANO?
● Schnelles Code Deployment (Komplett oder Teil)
● Prozess – Automatisierung (zb. Klone Projekt, Flush Cache, DB Update)
● Mehrstufiges Deployment (dev, staging, live)
● Multiple Server Deployment
● Befehle auf Server ausführen
● Schnelles Rollback zu einer archivierten Version der Applikation
● Server Rollen abbilden (DB, Web, App,...)
● Tasks „before“ und „after“ Tasks auslösen
● Verzeichnisse und/oder Dateien zwischen Releases sharen
● ...
INSTALL CAPISTRANO
„apt“ managed Distro's:
● apt-get install ruby
● gem install capistrano
● apt-get install git (Client & Server)
Capistrano im Projekt initialisieren:
● cd projectPath
● cap install
Magento Tasks hinzufügen
● https://github.com/roman204/capistran
● magento.rake nach
lib/capistrano/tasks kopieren
CAPISTRANO EINRICHTEN
● deploy.rb einrichten
● set :application, "myMagentoShop"
● set :repo_url, "git@bitbucket.org:roman204/mage_test.git"
● set :keep_releases, 5
● selbstdefinierte Tasks
● Magento-Core wird nicht über composer installiert:
set :linked_dirs, ['var', 'media', 'sitemaps']
set :linked_files, ['app/etc/local.xml']
● Magento-Core wird über composer im Verzeichnis „htdocs“ installiert:
set :linked_dirs, ['htdocs/var', 'htdocs/media', 'htdocs/sitemaps']
set :linked_files, ['htdocs/app/etc/local.xml']
DEPLOYMENT KONFIGURATION
phpStorm → deploy.rb
The „Flow“
Alle direkt aufrufbaren Tasks mit cap -T
phpStorm → magento.rake
CAPISTRANO UND MAGENTO
Magento spezifische Tasks für Capistrano v3
STAGES EINRICHTEN
● Stages einrichten
● config/deploy/{mystage}.rb
● Rolle definieren
● SSH Zugang definieren
– sollte Schlüssel basiert
authentifiziert werden
– sollte ein eigener
User am Server sein
NEUES PROJEKT
cap {stage} deploy:check
Capistrano verbindet sich zur Stage "development" und überprüft ob die Abhängigkeiten
für ein Deployment erfüllt sind.
Überprüft wird :
● SSH - Zugang
● Schreibrechte der Verzeichnisse
● Installation der benötigten Libs (zb. git,…).
● + Legt Verzeichnisse „shared“ und „releases“ an.
NEUES PROJEKT
cap {stage} deploy
● Capistrano verbindet sich zur Stage
● Legt einen neuen releases/{timestamp} an
● Setzt darin die symlinks für "shared dirs und shared files"
● Code Update
● Setzt den symlink 'current' auf den releases/{timestamp}
● Abschließende Tasks
Struktur
Weitere Möglichkeiten...
● Magento installieren ?
● Update Scripts ?
● Datenbank ?
● Tests ?
● Revert ?
Magento autom. Installieren
cap {stage} project:install_magento
● führt install.php anhand der angegeben Parameter
/config/stage/{stage}.rb aus
php install.php -- --license_agreement_accepted "yes" -- locale "de_AT" ...
Datenbank
cap {stage} project:import_db
● Lädt einen mySQL Dump hoch und importiert diesen.
UnitTests
cap {stage} project:run_tests
● Verbindet sich zur Stage und für phpunit aus
Rollback inkl. Datenbank
cap {stage} deploy:rollback
● deploy:starting
● deploy:started
●
deploy:reverting - revert server(s) to previous release
●
deploy:reverted - reverted hook
●
deploy:publishing
● deploy:published
● deploy:finishing_rollback - finish the rollback, clean up everything
●
deploy:finished
Danke

Weitere ähnliche Inhalte

Was ist angesagt?

Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistrano
daniel.mattes
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
Daniel Andrisek
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Gregor Biswanger
 
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
DietrichRordorf
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
JanWeinschenker
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppet
inovex GmbH
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
NETWAYS
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
René Winkelmeyer
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Gregor Biswanger
 
Deployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkinsDeployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkins
Bild GmbH & Co. KG
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
Patrick Charrier
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
Martin Christen
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Steffen Gebert
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
punkt.de GmbH
 
TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)
Marcus Schwemer
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
Ulrich Gerkmann-Bartels
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
OPITZ CONSULTING Deutschland
 
Continuous Integration mit Hudson
Continuous Integration mit HudsonContinuous Integration mit Hudson
Continuous Integration mit Hudson
Dr. Christian Betz
 

Was ist angesagt? (20)

Deployment mit Webistrano
Deployment mit WebistranoDeployment mit Webistrano
Deployment mit Webistrano
 
Deployment 2.0
Deployment 2.0Deployment 2.0
Deployment 2.0
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
10 Stunden / 5 Massnahmen: Sicherheit einer Web App erhöhen
 
Eine Stunde was mit Api First!
Eine Stunde was mit Api First!Eine Stunde was mit Api First!
Eine Stunde was mit Api First!
 
Nginx
NginxNginx
Nginx
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppet
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Deployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkinsDeployment pipeline mit maven, chef und jenkins
Deployment pipeline mit maven, chef und jenkins
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
 
Continuous Integration mit Hudson
Continuous Integration mit HudsonContinuous Integration mit Hudson
Continuous Integration mit Hudson
 

Ähnlich wie Deploy Magento Shops with Capistrano v3

TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
Marc Müller
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
Marc Müller
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
QAware GmbH
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
OPITZ CONSULTING Deutschland
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
Christian Keuerleber
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
Florian Holzhauer
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
Christian Colbach
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
QAware GmbH
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
inovex GmbH
 
JAMstack / Static Site Generators
JAMstack / Static Site GeneratorsJAMstack / Static Site Generators
JAMstack / Static Site Generators
DietrichRordorf
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
Stefan Scheidt
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
Christian Münch
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
QAware GmbH
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
Joachim Baumann
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
inovex GmbH
 
JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
Kai Donato
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
Openshift
OpenshiftOpenshift
Openshift
storminator
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
Thomas Kratz
 

Ähnlich wie Deploy Magento Shops with Capistrano v3 (20)

TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
TechDays 2016 - Der DevOps Kreislauf – Moderne Source Code Verwaltung und Pac...
 
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
BASTA Spring 2016 - Moderne Versionsverwaltung mit Git, und der neue Build-Se...
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
JAMstack / Static Site Generators
JAMstack / Static Site GeneratorsJAMstack / Static Site Generators
JAMstack / Static Site Generators
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Openshift
OpenshiftOpenshift
Openshift
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
 

Deploy Magento Shops with Capistrano v3

  • 1. Deploy Magento Shops mit Capistrano Roman Hutterer - 2015 CAPISTRANO - MAGENTO
  • 2. ROMAN HUTTERER ● Selbstständiger Webentwickler www.multibyte.at ● Senior Developer bei Cyberhouse www.cyberhouse.at ● Magento Certified Developer ● Webentwickler seit 2005 ● Magento-Entwickler seit 2011 ● @roman204 ● http://github.com/roman204
  • 3. WARUM EIN DEPLOYMENT TOOL? ● kein direkter Zugang (FTP, SSH, SFTP,...) nötig ● kein „vergessen Hochzuladen“ ● keine Änderungen am Server direkt ● schneller Rollback ● wiederkehrende Schritte können automatisiert werden ● clearCache, enableCompiler,... ● Automatisches Testen möglich ● meistens History ● ….
  • 4. WAS IST CAPISTRANO? ● ein Deployment – Tool ● geschrieben in Ruby ● Open Source ● eine Community Entwicklung ● einfach Erweiterbar und/oder Überschreibbar ● ist Event gesteuert ● leicht zu debuggen ● ...
  • 5. VORTEILE CAPISTRANO? ● Schnelles Code Deployment (Komplett oder Teil) ● Prozess – Automatisierung (zb. Klone Projekt, Flush Cache, DB Update) ● Mehrstufiges Deployment (dev, staging, live) ● Multiple Server Deployment ● Befehle auf Server ausführen ● Schnelles Rollback zu einer archivierten Version der Applikation ● Server Rollen abbilden (DB, Web, App,...) ● Tasks „before“ und „after“ Tasks auslösen ● Verzeichnisse und/oder Dateien zwischen Releases sharen ● ...
  • 6. INSTALL CAPISTRANO „apt“ managed Distro's: ● apt-get install ruby ● gem install capistrano ● apt-get install git (Client & Server) Capistrano im Projekt initialisieren: ● cd projectPath ● cap install Magento Tasks hinzufügen ● https://github.com/roman204/capistran ● magento.rake nach lib/capistrano/tasks kopieren
  • 7. CAPISTRANO EINRICHTEN ● deploy.rb einrichten ● set :application, "myMagentoShop" ● set :repo_url, "git@bitbucket.org:roman204/mage_test.git" ● set :keep_releases, 5 ● selbstdefinierte Tasks ● Magento-Core wird nicht über composer installiert: set :linked_dirs, ['var', 'media', 'sitemaps'] set :linked_files, ['app/etc/local.xml'] ● Magento-Core wird über composer im Verzeichnis „htdocs“ installiert: set :linked_dirs, ['htdocs/var', 'htdocs/media', 'htdocs/sitemaps'] set :linked_files, ['htdocs/app/etc/local.xml']
  • 8. DEPLOYMENT KONFIGURATION phpStorm → deploy.rb The „Flow“ Alle direkt aufrufbaren Tasks mit cap -T phpStorm → magento.rake
  • 9. CAPISTRANO UND MAGENTO Magento spezifische Tasks für Capistrano v3
  • 10. STAGES EINRICHTEN ● Stages einrichten ● config/deploy/{mystage}.rb ● Rolle definieren ● SSH Zugang definieren – sollte Schlüssel basiert authentifiziert werden – sollte ein eigener User am Server sein
  • 11. NEUES PROJEKT cap {stage} deploy:check Capistrano verbindet sich zur Stage "development" und überprüft ob die Abhängigkeiten für ein Deployment erfüllt sind. Überprüft wird : ● SSH - Zugang ● Schreibrechte der Verzeichnisse ● Installation der benötigten Libs (zb. git,…). ● + Legt Verzeichnisse „shared“ und „releases“ an.
  • 12. NEUES PROJEKT cap {stage} deploy ● Capistrano verbindet sich zur Stage ● Legt einen neuen releases/{timestamp} an ● Setzt darin die symlinks für "shared dirs und shared files" ● Code Update ● Setzt den symlink 'current' auf den releases/{timestamp} ● Abschließende Tasks
  • 14. Weitere Möglichkeiten... ● Magento installieren ? ● Update Scripts ? ● Datenbank ? ● Tests ? ● Revert ?
  • 15. Magento autom. Installieren cap {stage} project:install_magento ● führt install.php anhand der angegeben Parameter /config/stage/{stage}.rb aus php install.php -- --license_agreement_accepted "yes" -- locale "de_AT" ...
  • 16. Datenbank cap {stage} project:import_db ● Lädt einen mySQL Dump hoch und importiert diesen.
  • 17. UnitTests cap {stage} project:run_tests ● Verbindet sich zur Stage und für phpunit aus
  • 18. Rollback inkl. Datenbank cap {stage} deploy:rollback ● deploy:starting ● deploy:started ● deploy:reverting - revert server(s) to previous release ● deploy:reverted - reverted hook ● deploy:publishing ● deploy:published ● deploy:finishing_rollback - finish the rollback, clean up everything ● deploy:finished
  • 19. Danke