Drupal deployments met Capistrano Openminds techtalk - 17/10/2012 @openminds www.openminds.be donderdag 25 oktober 12
Drupal deployments met Capistrano
Openminds techtalk - 17/10/2012@openminds
www.openminds.be
donderdag 25 oktober 12
Hoe deploy je nu?
• Backup database
• Code updaten (met git? scp? sftp?)
• updatedb uitvoeren
• cache flushen
donderdag 25 oktober 12
Wat is daar mis mee?
Teveel manuele handelingen verhogen de kans op fouten.
donderdag 25 oktober 12
Ideaal scenario
• Snel deployen door alle manuele processen te automatiseren
• Manuele processen individueel oproepen adhv ‘tasks’
• Snel een deploy ‘ongedaan’ maken
donderdag 25 oktober 12
• Open Source
• Gemaakt om Rails Apps te deployen
• Ruby
donderdag 25 oktober 12
Rubygems
gem install capistrano capistrano-ext railsless-deploy\ capistrano-drupal
donderdag 25 oktober 12
Pri
Pub
Keypair
Laptop
Server
Github
Machines
SSH
donderdag 25 oktober 12
Versiecontrole
• Git, SVN, ...
• code bijhouden in versies
• te ‘pushen’ naar een repository (repo)
• Capistrano zal code van repo halen
donderdag 25 oktober 12
DEMO
donderdag 25 oktober 12
• Geen benodigde software op de server
• Capistrano voert commandos uit over ssh
• Uitbreidbaar adhv tasks
donderdag 25 oktober 12
Aanpassen voor DrupalBij deploy:setup:
• Symlink voor sites/default/files -> shared/files
• sites/default/settings.php -> shared/settings.php
Na deploy:
• Tasks voor drush commands
donderdag 25 oktober 12
donderdag 25 oktober 12
capistrano-drupal gem
• Veelvoorkomende Drupal deployment tasks (Drush commands)
• implementeert before en after hooks
donderdag 25 oktober 12
capistrano-drupal gem
deploy:setup
• files directory in shared
• settings.php in shared
donderdag 25 oktober 12
capistrano-drupal gem
drupal:symlink_shared
• settings.php en files directory symlinken naar shared
• after deploy:symlink
donderdag 25 oktober 12
capistrano-drupal gem
drush:update
• drush updatedb
• after ‘deploy:symlink’
donderdag 25 oktober 12
capistrano-drupal gem
drush:cache_clear
• drush cc
• after ‘deploy:symlink’
donderdag 25 oktober 12
capistrano-drupal gemUpdate Code
Symlink files directory & settings.php
Update DB
Flush caches
donderdag 25 oktober 12
DEMO
donderdag 25 oktober 12
Probleem
• alle configuratie zit in de database
• Continuous Integration moeilijk
• wat met meerdere developers?
donderdag 25 oktober 12
Ideale situatie
2-richtingsverkeer
• Content komt terug upstream, naar Stag en Dev
• Configuratie downstream: Stag en Prod
donderdag 25 oktober 12
OplossingConfiguratie in code
• Versiecontrole (Git, SVN, ...)
• Te debuggen
• Te diffen
• Reproduceerbare resultaten
• opdeling tussen content en configuratie
donderdag 25 oktober 12
donderdag 25 oktober 12
Context en Features Module
• Context zijn set regels tijdens page load, ziet wat actief is
• Features pakt dit in met ‘code’ (views, node, types)
• Features te enablen met ‘drush’
• Drush runnen vanuit capistrano
donderdag 25 oktober 12
Features Drush
• drush features-update feature_name
• drush features-revert feature_name
donderdag 25 oktober 12
Capo.io
donderdag 25 oktober 12
End
donderdag 25 oktober 12