Deployment 2.0

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