Slide 1

Slide 1 text

Drupal deployments met Capistrano Openminds techtalk - 17/10/2012 @openminds www.openminds.be

Slide 2

Slide 2 text

Hoe deploy je nu? •Backup database •Code updaten (met git? scp? sftp?) •updatedb uitvoeren •cache flushen

Slide 3

Slide 3 text

Wat is daar mis mee? Teveel manuele handelingen verhogen de kans op fouten.

Slide 4

Slide 4 text

Ideaal scenario • Snel deployen door alle manuele processen te automatiseren • Manuele processen individueel oproepen adhv ‘tasks’ • Snel een deploy ‘ongedaan’ maken

Slide 5

Slide 5 text

• Open Source • Gemaakt om Rails Apps te deployen • Ruby

Slide 6

Slide 6 text

Rubygems gem install capistrano capistrano-ext railsless-deploy\ capistrano-drupal

Slide 7

Slide 7 text

Pri Pub Keypair Laptop Server Github Machines SSH

Slide 8

Slide 8 text

Versiecontrole •Git, SVN, ... •code bijhouden in versies •te ‘pushen’ naar een repository (repo) •Capistrano zal code van repo halen

Slide 9

Slide 9 text

DEMO

Slide 10

Slide 10 text

• Geen benodigde software op de server • Capistrano voert commandos uit over ssh • Uitbreidbaar adhv tasks

Slide 11

Slide 11 text

Aanpassen voor Drupal Bij deploy:setup: • Symlink voor sites/default/files -> shared/files • sites/default/settings.php -> shared/settings.php Na deploy: • Tasks voor drush commands

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

capistrano-drupal gem • Veelvoorkomende Drupal deployment tasks (Drush commands) • implementeert before en after hooks

Slide 14

Slide 14 text

capistrano-drupal gem deploy:setup • files directory in shared • settings.php in shared

Slide 15

Slide 15 text

capistrano-drupal gem drupal:symlink_shared • settings.php en files directory symlinken naar shared • after deploy:symlink

Slide 16

Slide 16 text

capistrano-drupal gem drush:update • drush updatedb • after ‘deploy:symlink’

Slide 17

Slide 17 text

capistrano-drupal gem drush:cache_clear • drush cc • after ‘deploy:symlink’

Slide 18

Slide 18 text

capistrano-drupal gem Update Code Symlink files directory & settings.php Update DB Flush caches

Slide 19

Slide 19 text

DEMO

Slide 20

Slide 20 text

Probleem • alle configuratie zit in de database • Continuous Integration moeilijk • wat met meerdere developers?

Slide 21

Slide 21 text

Ideale situatie 2-richtingsverkeer • Content komt terug upstream, naar Stag en Dev • Configuratie downstream: Stag en Prod

Slide 22

Slide 22 text

Oplossing Configuratie in code • Versiecontrole (Git, SVN, ...) • Te debuggen • Te diffen • Reproduceerbare resultaten • opdeling tussen content en configuratie

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Features Drush • drush features-update feature_name • drush features-revert feature_name

Slide 26

Slide 26 text

Capo.io

Slide 27

Slide 27 text

End