SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Drupal Deployment 2.0
Christian Schramm
Webentwicklung, Projektmanagement, Deployment
Brightsolutions GmbH, Darmstadt


Twitter: schrammos
XING: https://www.xing.com/profile/Christian_Schramm12
Facebook: https://www.facebook.com/schrammos
Mail: schramm@brightsolutions.de
Agenda


Jenkins Continous Integration
Features, Strongarm
Update- und Drush-Scripts
Updatescript- und Drushscript-Prozessor
Git und eine Repository-Strategie
Codemetriken und Codeanalyse beim Deployment
Continous Integration mit Jenkins
Über Weboberfläche können Jobs getriggert werden


Jenkins Jobs
- Dev-Server aktualisieren (git pull, autom. alle 15 min.)
- Stage-Server aktualisieren (git pull, manuell getriggert)
- Live-Server aktualisieren (drush-rsync von Stage-Server)
- Dokumentation erstellen (Doxygen Plugin)
Jenkins
                                               Continous Integration
                                                      Server


                 Development
                    Server

Webdeveloper 1
                                      Stage
Local, XAMPP,                         Server
  Git, Drush




                                                            Live
Webdeveloper 2
                                                           Server
Local, XAMPP,              Git-Repo
  Git, Drush                Server
Features und Strongarm exportable (Auswahl)
Berechtigungen               Image-Styles
Block Settings               Profile Types
CK-Editor Profiles           Rollen
Conditional Fields           Rules
Content-Types                Taxonomie (keine Terms)
Context                      Textformate
Fields, Fieldgroups          Variables
Flag-Settings                Views
Feature Updateprozess
- Aktualisierte Features werden vom Entwickler in das
 Git-Repo gepushed
- Jenkins (CI) aktualisiert Dev-, Stage- oder Live-Server


Problem:
- Features müssen beim Deployment reverted werden
- Manches ist mit Features nicht exportierbar


Lösung: Updatescripts
Update- und Drush-Scripts
- enthalten PHP-Code der beim Deployment ausgeführt wird
- werden unter /sites/default/updatescripts abgelegt
- werden beim Deployment automatisch ausgeführt


Update- und Drush-Script Aufgaben
- Module an- und abschalten
- Themes aktivieren
- Features reverten
- Deployment von Strukturen die mit Features nicht gehen
- einzelne Variablen setzen
Update- und Drush-Scripts Beispiel

 Beispiel 1: Einschalten von Modulen mit einem Drush- / Updatescript

 <?php

  $host->set_author ('Christian Schramm');
  $host->set_description ('Enable initial modules.');

  // enable initial modules
  $host->drush ("en contact");
  $host->drush ("en ctools");
  $host->drush ("en views");
  $host->drush ("en views_ui");

  $host->finish_processing ();
Update- und Drush-Script-Prozessor (Modul)


- stellt in Drupal eine Verwaltungsoberfläche bereit
- kann Updatescripte ausführen (Button)
- registriert ausgeführte Updatescripte in der Datenbank
- erweitert Drush um einen Befehl (drush updatescripts)


Mit diesem Drush-Befehl werden alle neuen Updatescripts
von Jenkins beim Deployment automatisch ausgeführt.
Jenkins Deployment mit Updatescripts


Im Buildprozess von Jenkins passiert folgendes:

ssh servername "cd /var/www/projectname.de/www
               && git pull && git submodule init && git submodule update
               && drush updatescripts && drush cc all"
Git und eine Repository-Strategie


Alle Entwickler arbeiten auf dem DEV-Branch des Repos.


Das Filesystem des Dev- und Stage-Servers entspricht auch
dem Stand des DEV-Branches.


Der Master-Branch entspricht immer der Live-Version und wird
ausschließlich beim aktualisieren des Live-Servers von
Jenkins aktualisiert.
Codemetriken und Codeanalyse


Beim Build kann Jenkins mit vielen Plugins Codeanalysen
ausführen, z.B. Duplicate Content, Lines of Code, Lines of
Comments, Coding Style prüfen


Als Test können auch SimpleTests von (eigenen) Modulen via
Drush ausgeführt werden
Workflow für Entwickler


- alle Änderungen in Features verpacken
- aspektorientierte Features bauen
- bei aktualisierten Features ein Updatescript zum reverten
  des Features schreiben
- Änderungen die nicht durch Features abzudecken sind durch
  eigenes Updatescript umsetzen
- Features und Updatescripts committen und pushen
Workflow für Dev-, Stage-, Live-Serverupdates


- Dev-Server-Builds automatisch alle 15 min.
- Stage-Server-Builds manuell, via Knopfdruck
- Live-Server-Builds manuell, via Knopfdruck


Ausfallzeiten des Servers während der Updates sehr kurz
(wenige Minuten je nach Updatemenge).
Mit Jenkins, Drush und Updatescripts alles voll automatisiert,
keine Nacharbeit nötig.
Viel Spaß noch auf dem

 Drupal Camp 2012

Weitere ähnliche Inhalte

Was ist angesagt?

Rhomobile
RhomobileRhomobile
Rhomobile
Jan Ow
 
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
 

Was ist angesagt? (20)

Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
 
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?
 
Rhomobile
RhomobileRhomobile
Rhomobile
 
GIT / SVN
GIT / SVNGIT / SVN
GIT / SVN
 
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
 
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigr...
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
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
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbHEntwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity 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
 
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
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 

Ähnlich wie Deployment 2.0

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
s0enke
 

Ähnlich wie Deployment 2.0 (20)

elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
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
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Silverlight - Tipps & Tricks für Fortgeschrittene
Silverlight - Tipps & Tricks für FortgeschritteneSilverlight - Tipps & Tricks für Fortgeschrittene
Silverlight - Tipps & Tricks für Fortgeschrittene
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release Management
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...
 

Deployment 2.0

  • 2. Christian Schramm Webentwicklung, Projektmanagement, Deployment Brightsolutions GmbH, Darmstadt Twitter: schrammos XING: https://www.xing.com/profile/Christian_Schramm12 Facebook: https://www.facebook.com/schrammos Mail: schramm@brightsolutions.de
  • 3. Agenda Jenkins Continous Integration Features, Strongarm Update- und Drush-Scripts Updatescript- und Drushscript-Prozessor Git und eine Repository-Strategie Codemetriken und Codeanalyse beim Deployment
  • 4. Continous Integration mit Jenkins Über Weboberfläche können Jobs getriggert werden Jenkins Jobs - Dev-Server aktualisieren (git pull, autom. alle 15 min.) - Stage-Server aktualisieren (git pull, manuell getriggert) - Live-Server aktualisieren (drush-rsync von Stage-Server) - Dokumentation erstellen (Doxygen Plugin)
  • 5. Jenkins Continous Integration Server Development Server Webdeveloper 1 Stage Local, XAMPP, Server Git, Drush Live Webdeveloper 2 Server Local, XAMPP, Git-Repo Git, Drush Server
  • 6. Features und Strongarm exportable (Auswahl) Berechtigungen Image-Styles Block Settings Profile Types CK-Editor Profiles Rollen Conditional Fields Rules Content-Types Taxonomie (keine Terms) Context Textformate Fields, Fieldgroups Variables Flag-Settings Views
  • 7. Feature Updateprozess - Aktualisierte Features werden vom Entwickler in das Git-Repo gepushed - Jenkins (CI) aktualisiert Dev-, Stage- oder Live-Server Problem: - Features müssen beim Deployment reverted werden - Manches ist mit Features nicht exportierbar Lösung: Updatescripts
  • 8. Update- und Drush-Scripts - enthalten PHP-Code der beim Deployment ausgeführt wird - werden unter /sites/default/updatescripts abgelegt - werden beim Deployment automatisch ausgeführt Update- und Drush-Script Aufgaben - Module an- und abschalten - Themes aktivieren - Features reverten - Deployment von Strukturen die mit Features nicht gehen - einzelne Variablen setzen
  • 9. Update- und Drush-Scripts Beispiel Beispiel 1: Einschalten von Modulen mit einem Drush- / Updatescript <?php $host->set_author ('Christian Schramm'); $host->set_description ('Enable initial modules.'); // enable initial modules $host->drush ("en contact"); $host->drush ("en ctools"); $host->drush ("en views"); $host->drush ("en views_ui"); $host->finish_processing ();
  • 10. Update- und Drush-Script-Prozessor (Modul) - stellt in Drupal eine Verwaltungsoberfläche bereit - kann Updatescripte ausführen (Button) - registriert ausgeführte Updatescripte in der Datenbank - erweitert Drush um einen Befehl (drush updatescripts) Mit diesem Drush-Befehl werden alle neuen Updatescripts von Jenkins beim Deployment automatisch ausgeführt.
  • 11. Jenkins Deployment mit Updatescripts Im Buildprozess von Jenkins passiert folgendes: ssh servername "cd /var/www/projectname.de/www && git pull && git submodule init && git submodule update && drush updatescripts && drush cc all"
  • 12. Git und eine Repository-Strategie Alle Entwickler arbeiten auf dem DEV-Branch des Repos. Das Filesystem des Dev- und Stage-Servers entspricht auch dem Stand des DEV-Branches. Der Master-Branch entspricht immer der Live-Version und wird ausschließlich beim aktualisieren des Live-Servers von Jenkins aktualisiert.
  • 13. Codemetriken und Codeanalyse Beim Build kann Jenkins mit vielen Plugins Codeanalysen ausführen, z.B. Duplicate Content, Lines of Code, Lines of Comments, Coding Style prüfen Als Test können auch SimpleTests von (eigenen) Modulen via Drush ausgeführt werden
  • 14. Workflow für Entwickler - alle Änderungen in Features verpacken - aspektorientierte Features bauen - bei aktualisierten Features ein Updatescript zum reverten des Features schreiben - Änderungen die nicht durch Features abzudecken sind durch eigenes Updatescript umsetzen - Features und Updatescripts committen und pushen
  • 15. Workflow für Dev-, Stage-, Live-Serverupdates - Dev-Server-Builds automatisch alle 15 min. - Stage-Server-Builds manuell, via Knopfdruck - Live-Server-Builds manuell, via Knopfdruck Ausfallzeiten des Servers während der Updates sehr kurz (wenige Minuten je nach Updatemenge). Mit Jenkins, Drush und Updatescripts alles voll automatisiert, keine Nacharbeit nötig.
  • 16. Viel Spaß noch auf dem Drupal Camp 2012