Deployment 2.0

16

Click here to load reader

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

Transcript of Deployment 2.0

Page 1: Deployment 2.0

Drupal Deployment 2.0

Page 2: Deployment 2.0

Christian SchrammWebentwicklung, Projektmanagement, DeploymentBrightsolutions GmbH, Darmstadt

Twitter: schrammosXING: https://www.xing.com/profile/Christian_Schramm12Facebook: https://www.facebook.com/schrammosMail: [email protected]

Page 3: Deployment 2.0

Agenda

Jenkins Continous IntegrationFeatures, StrongarmUpdate- und Drush-ScriptsUpdatescript- und Drushscript-ProzessorGit und eine Repository-StrategieCodemetriken und Codeanalyse beim Deployment

Page 4: Deployment 2.0

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)

Page 5: Deployment 2.0

Webdeveloper 1

Local, XAMPP, Git, Drush

Git-RepoServer

JenkinsContinous Integration

Server

LiveServer

StageServer

DevelopmentServer

Webdeveloper 2

Local, XAMPP, Git, Drush

Page 6: Deployment 2.0

Features und Strongarm exportable (Auswahl)BerechtigungenBlock SettingsCK-Editor ProfilesConditional FieldsContent-TypesContextFields, FieldgroupsFlag-Settings

Image-StylesProfile TypesRollenRulesTaxonomie (keine Terms)TextformateVariablesViews

Page 7: Deployment 2.0

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

Page 8: Deployment 2.0

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

Page 9: Deployment 2.0

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 ();

Page 10: Deployment 2.0

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.

Page 11: Deployment 2.0

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"

Page 12: Deployment 2.0

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.

Page 13: Deployment 2.0

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

Page 14: Deployment 2.0

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

Page 15: Deployment 2.0

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.

Page 16: Deployment 2.0

Viel Spaß noch auf dem

Drupal Camp 2012