drupal deployments met capistrano

27
Drupal deployments met Capistrano Openminds techtalk - 17/10/2012 @openminds www.openminds.be donderdag 25 oktober 12

Upload: zhann

Post on 10-Jul-2015

1.539 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Drupal deployments met capistrano

Drupal deployments met Capistrano

Openminds techtalk - 17/10/2012@openminds

www.openminds.be

donderdag 25 oktober 12

Page 2: Drupal deployments met capistrano

Hoe deploy je nu?

• Backup database

• Code updaten (met git? scp? sftp?)

• updatedb uitvoeren

• cache flushen

donderdag 25 oktober 12

Page 3: Drupal deployments met capistrano

Wat is daar mis mee?

Teveel manuele handelingen verhogen de kans op fouten.

donderdag 25 oktober 12

Page 4: Drupal deployments met capistrano

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

Page 5: Drupal deployments met capistrano

• Open Source

• Gemaakt om Rails Apps te deployen

• Ruby

donderdag 25 oktober 12

Page 6: Drupal deployments met capistrano

Rubygems

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

donderdag 25 oktober 12

Page 7: Drupal deployments met capistrano

Pri

Pub

Keypair

Laptop

Server

Github

Machines

SSH

donderdag 25 oktober 12

Page 8: Drupal deployments met capistrano

Versiecontrole

• Git, SVN, ...

• code bijhouden in versies

• te ‘pushen’ naar een repository (repo)

• Capistrano zal code van repo halen

donderdag 25 oktober 12

Page 9: Drupal deployments met capistrano

DEMO

donderdag 25 oktober 12

Page 10: Drupal deployments met capistrano

• Geen benodigde software op de server

• Capistrano voert commandos uit over ssh

• Uitbreidbaar adhv tasks

donderdag 25 oktober 12

Page 11: Drupal deployments met capistrano

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

Page 12: Drupal deployments met capistrano

donderdag 25 oktober 12

Page 13: Drupal deployments met capistrano

capistrano-drupal gem

• Veelvoorkomende Drupal deployment tasks (Drush commands)

• implementeert before en after hooks

donderdag 25 oktober 12

Page 14: Drupal deployments met capistrano

capistrano-drupal gem

deploy:setup

• files directory in shared

• settings.php in shared

donderdag 25 oktober 12

Page 15: Drupal deployments met capistrano

capistrano-drupal gem

drupal:symlink_shared

• settings.php en files directory symlinken naar shared

• after deploy:symlink

donderdag 25 oktober 12

Page 16: Drupal deployments met capistrano

capistrano-drupal gem

drush:update

• drush updatedb

• after ‘deploy:symlink’

donderdag 25 oktober 12

Page 17: Drupal deployments met capistrano

capistrano-drupal gem

drush:cache_clear

• drush cc

• after ‘deploy:symlink’

donderdag 25 oktober 12

Page 18: Drupal deployments met capistrano

capistrano-drupal gemUpdate Code

Symlink files directory & settings.php

Update DB

Flush caches

donderdag 25 oktober 12

Page 19: Drupal deployments met capistrano

DEMO

donderdag 25 oktober 12

Page 20: Drupal deployments met capistrano

Probleem

• alle configuratie zit in de database

• Continuous Integration moeilijk

• wat met meerdere developers?

donderdag 25 oktober 12

Page 21: Drupal deployments met capistrano

Ideale situatie

2-richtingsverkeer

• Content komt terug upstream, naar Stag en Dev

• Configuratie downstream: Stag en Prod

donderdag 25 oktober 12

Page 22: Drupal deployments met capistrano

OplossingConfiguratie in code

• Versiecontrole (Git, SVN, ...)

• Te debuggen

• Te diffen

• Reproduceerbare resultaten

• opdeling tussen content en configuratie

donderdag 25 oktober 12

Page 23: Drupal deployments met capistrano

donderdag 25 oktober 12

Page 24: Drupal deployments met capistrano

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

Page 25: Drupal deployments met capistrano

Features Drush

• drush features-update feature_name

• drush features-revert feature_name

donderdag 25 oktober 12

Page 26: Drupal deployments met capistrano

Capo.io

donderdag 25 oktober 12

Page 27: Drupal deployments met capistrano

End

donderdag 25 oktober 12