View
4.993
Download
0
Category
Preview:
DESCRIPTION
Wer professionelle Webentwicklung betreibt, braucht einen gut funktionierenden Deployment-Prozess, um Updates von den lokalen Rechnern der Entwickler problemlos auf Test-, Stage- und Live-Server zu bekommen ohne dort die Datenbestände zu gefährden.In dieser Session zeigen wir das Drupal-Deployment in einem neuen Workflow.Mit von der Partie sind:FeaturesStrongarmUpdate- und Drush-ScriptsUpdatescript- und Drushscript-ProzessorGit und eine Repository-StrategieJenkins Continous IntegrationCodemetriken und Codeanalyse beim Deployment
Citation preview
Drupal Deployment 2.0
Christian SchrammWebentwicklung, Projektmanagement, DeploymentBrightsolutions GmbH, Darmstadt
Twitter: schrammosXING: https://www.xing.com/profile/Christian_Schramm12Facebook: https://www.facebook.com/schrammosMail: schramm@brightsolutions.de
Agenda
Jenkins Continous IntegrationFeatures, StrongarmUpdate- und Drush-ScriptsUpdatescript- und Drushscript-ProzessorGit und eine Repository-StrategieCodemetriken 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)
Webdeveloper 1
Local, XAMPP, Git, Drush
Git-RepoServer
JenkinsContinous Integration
Server
LiveServer
StageServer
DevelopmentServer
Webdeveloper 2
Local, XAMPP, Git, Drush
Features und Strongarm exportable (Auswahl)BerechtigungenBlock SettingsCK-Editor ProfilesConditional FieldsContent-TypesContextFields, FieldgroupsFlag-Settings
Image-StylesProfile TypesRollenRulesTaxonomie (keine Terms)TextformateVariablesViews
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
Recommended