190 likes | 282 Views
Automating D rupal Deployment. Dominique De Cooman. Who am I. Developer for 5 years Web agencies in Belgium http://drupal.org/user/199987 Contributions Blog http://dominiquedecooman.com. Why deploying automaticaly. Faster Less errors Well documented Reproducable History
E N D
AutomatingDrupal Deployment Dominique De Cooman
Whoam I Developer for 5 years Web agencies in Belgium http://drupal.org/user/199987 Contributions Blog http://dominiquedecooman.com
Whydeployingautomaticaly Faster Lesserrors Well documented Reproducable History Continous Integration
Basic components Vpswith a Lamp stack Version control – Git Drush Drupal of course Dev – Staging – Production setup Continousintegration server Deployment scripts
How to set it up? • Vps • Youcan get a vpsfrom 12€/month on most hosting platforms. There are trials availableeverywhere • Example: • https://www.gandi.net/hosting/trial/ • https://control.vps.net/trial-signup
Installyour lamp stack • Plenty of installation scripts online • Example • http://www.dominiquedecooman.com/blog/automate-installing-drupal-ubuntu-drupal-training-purpose
Version control • Git • We willuse the succesfullbranching model • http://nvie.com/posts/a-successful-git-branching-model/ • Git flow • Productionbranch • Development branch • Release branch • Hotfixes • Install • Git flow • Bash complete
Drush • DRUpalSHell • Install • http://drupal.org/project/drush • Drushaliasses • Simplyfiesexecutingcommands in builds
Drupal • Create a proper repositorylayout • Bash • Updates • Installs • scripts • Docroot • Documentation • Etc • Drupal (settings files, robot.txt, htaccess, …) • Drush - aliases • Ssh • vhost • Configureyou server toconnecttodrupal.
Continousintegration server • Jenkins • Install • https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu • Why? • Automateour workflow • Executeour tests
Automating the workflow Exporting database changes Configuringjenkins jobs Writingdeployment scripts
Exporting database changes Use features Usehook_update() D8 configuration management in core
Configuring the jobs • Jenkins • Create jobs • Environments • Testbots • Basic setup • General settings • Repositoryconfiguration • Build triggers • Post build actions
Buildsection • Copy files • Update the code • Settings file • Copy build script
Deploy scripts • Enable/Disable ui modules • Set environment specific variables • Error_level • Cache • Revert features • Update the database • Flush cache
Differences per environment • Modules • Leave the opportunity todebug • Error level • Cachingsettings • Stagingandproduction must byidentical • Representative • No testrun on production
Demo Develop on feature branch Run testbot – fix error Export changes Commit Merge feature in developmentbranch Deploy on development environment Monitor job execution Evaluate tests Manual testing Create release branch Deploy release branch on staging environment Evaluate tests Mergebranchinto master anddevelopment Deploy master on production environment Createhotfixbranch - maintenance Test anddeployhotfixbranch Mergehotfixinto master andmergeintodevelopment Deploy master
References http://dominiquedecooman.com http://durpal.org/user/199987 http://twitter.com/dominiquedc
Resources Minimizingoverhead with git flow http://dominiquedecooman.com/blog/git-flow-minimizing-overhead Installing lamp stack http://www.dominiquedecooman.com/blog/automate-installing-drupal-ubuntu-drupal-training-purpose Go live checklist http://www.dominiquedecooman.com/blog/drupal-7-tip-how-automate-and-control-your-go-live-checklist Installjenkinshttps://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu https://www.gandi.net/hosting/trial/ Get all the code, job scripts andpresentationoverview: http://dominiquedecooman.com/blog/automating-drupal-deployment