DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

19
Industrialisation Drupal avec Drush Rodolfo Ripado //

description

Drush - Drupal Shell - est un élément important dans le développement de sites Drupal. La plupart développeurs s'en servent pour effectuer des tâches courantes comme activer des modules, vider des caches, faire des sauvegardes de la base de données entre autres. Cependant au fil des années Drush s'est enrichit de possibilités avancées pour industrialiser le cycle de vie d'un projet : lancer des opérations sur plusieurs plateformes distantes avec les site-alias, synchroniser les bases de données et les fichiers de différentes instances avec sql-sync et rsync, composer ses propres commandes personnalisées avec les shell-alias. Avec Drush Make, il est possibile d'assembler automatiquement les différents modules, thèmes, patches et librairies javascript avec une makefile du projet. Lors de cette présentation nous verrons comment les équipes d'Alter Way utilisent toute la puissance de Drush pour développer, tester développements via des plateformes d'intégration continue ainsi que pour gérer les déploiements dans un processus de travail parfaitement industrialisé.

Transcript of DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Page 1: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Industrialisation Drupal avec Drush

Rodolfo Ripado //

Page 2: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 2 / 19

Qui suis-je ?

↳ Rodolfo Ripado, alias Gaspaio

↳ Drupaholic depuis 3 ans

↳ Modules : Simple Subscription, Custom Tokens, Swftools Plugins

↳ Mon dada : industrialisation, DevOps, ...bref, je déteste faire la même chose deux fois.

↳ Consultant Drupal chez

Page 3: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 3 / 19

Un accompagnement open source à 360°

Page 4: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 4 / 19

Drupal, we have a problem !

↳ Développer un site Drupal implique beaucoup de tâches répétitives !

↳ Vider les caches, télécharger/activer/désactiver des modules, mise à jour des features, etc.

↳ Dupliquer des instances d'un projet : "mais ... ça marche chez moi !"

↳ Déployer des mises à jour sur lesserveurs d'intégration, production.

Page 5: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 5 / 19

Bang !

↳ Terriblement ennuyeux : on pointe ... on clique ... on attend ... on pointe ... on clique ... on attend

↳ Les erreurs, les oublis sont fréquents.

↳ C'est lent. Les actions manuelles ne peuventpas être automatisées

↳ Faire du dev' Drupal, c'est : pas efficace

dangereux pour la santé de votre projet (et de vos devs).

Page 6: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 6 / 19

Industrialiser !!

↳ Il nous faut rendre ces procédures possibles en ligne de commande, bien plus rapide que l'interface web de Drupal.

↳ Automatiques, i.e. scriptées

↳ Evolutives !

↳ Fiables !

↳ Pour tout cela il nous faut :

DRUSH !

Page 7: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 7 / 19

Drush - Drupal Shell

↳ Application en ligne de commande pour effectuer des opérations Drupal Le couteau suisse de Drupal.

Facile à installer, via PEAR, aptitude, ...

Compatible windows, OSX et linux

↳ Quelques commandes basiques mais incroyablent utiles :

$ drush cache-clear all # vider tous les caches Drupal. Raccourci: cc

$ drush pm-download <nom_module> # télécharger un module. Raccourci: dl

$ drush pm-enable <nom_module> # activer un module. Raccourci: en

$ drush pm-disable <nom_module> # désactiver un module. Raccourci: dis

$ drush user-password <user_name> # changer un mot de passe. Raccourci: upwd

$ drush sql-dump > sauvegarde.sql # sauvegarder la base de données dans un fichier

$ drush site-install monprofil # installer un site Drupal. Raccourci: si

Page 8: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 8 / 19

Drush - Drupal Shell

↳ Drush accélère votre développement local. Vous vous demanderez comment vous avez pu travailler sans drush !

↳ Il permet d'automatiser certaines opérations via des scripts :

↳ Mais il fait beaucoup plus grâce à ses scripts de confguration

# Script très simple de mise à jour d'un site Drupal

# 1. Mise à jour du code

hg fetch

# 2. Mise à jour de la base de données et “vidage” des caches

drush updatedb

drush cc all

update-site.sh

Page 9: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Drupal Camp Lyon mai 2012 9 / 19

Drush – Les Shell Aliases

↳ Le but : référencer des instances Drush dans nos commandes !

↳ Les shell aliases sont des définitions d'instances Drupal,locales ou distantes

↳ Placés dans un fichier nommé aliases.drushrc.php

↳ A minima, il contient : L'URI de la machine distante (ou locale)

Le chemin vers le document root de l'instance Drupal

L'utilisateur système, utilisé pour le login ssh ou rsync

// Alias pour le serveur d'intégration

$aliases['inte'] = array(

'uri' => 'monprojet.integration',

'root' => '/var/www/monprojet',

'remote-user' => 'webmaster',

);

// Alias pour le serveur de production

$aliases['prod'] = array(

'uri' => 'monprojet.production',

'root' => '/var/www/monprojet',

'remote-user' => 'webmaster',

);

.../sites/all/drush/aliases.drushrc.php

Page 10: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 10 / 19

Drush – les shell aliases

↳ Ce fichier peut être : Global : /etc/drush/aliases.drushrc.php

Utilisateur : ~/.drush/aliases.drushrc.php

Projet : <root>/sites/all/drush/aliases.drushrc.php

↳ Peut / doit être versionné avec le code !

↳ Peut aussi contenir, pour une instance donnée n'importe quel paramètre pour n'importe quelle option de Drush.

↳ On peut maintenant lancer des commandes du type :

Industrialisation Drupal

# Vider les caches de l'instance d'intégration

drush @inte cc all

# Télécharger une sauvegarde de la base de données d'intégration

drush @inte sql-dump > sauvegarde.sql

Page 11: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 11 / 19

Shell aliases : synchroniser des instances Drupal

@self@inte

ImportBD et média

@prod

@self

@inte

ImportBD et média

$ drush sql-sync @inte @self

$ drush rsync @inte:%files @self:%files

$ drush sql-sync @prod [@self, @inte]

$ drush rsync @prod [@self, @inte]

↳ Pour en savoir plus :

$ drush topic docs-aliases

Industrialisation Drupal

Page 12: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 12 / 19

Drush Make

↳ Drush make est une extension une commande Drush 5 pour créer des sites Drupal prêts-à-installer.

↳ A partir d'un fichier de configuration - la makefile – Drush Make télécharge les modules, profils, thèmes, patches, libraires, ... de votre site à partir de sources différentes et construit votre répertoire Drupal.

Page 13: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 13 / 19

Une makefile très simple

↳ Combinée à un profil d'installation, une makefile permet de packager un site Drupal en entier.

; Une makefile vraiment très simple

core = 7.x

api = 2

projects[] = drupal

; Base modules

projects[] = ctools

projects[] = views

ma_makefile.make

Page 14: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 14 / 19

Drush Make + profil d'installation : AWDrupal

↳ AW Drupal est : Une makefile

Un profil d'installation

Disponible sur github : https://github.com/alterway/awdrupal

↳ A quoi cela sert ? Installer un Drupal pré-configuré avec quelques modules "essentiels"

pour faire des tests, pour démarrer un projet, etc.

Il s'agit d'un work in progress. Ce n'est pas une distribution, ni un produit, mais tout simplement un outil pratique pour les drupaliens de chez nous ou d'ailleurs.

↳ Le répertoire est composé de : Une makefile : build-awdrupal.make

Un profil d'installation classique

↳ Drush make + Drush site-install = un site drupal en deux commandes !

Page 15: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 15 / 19

Open Atrium : Comment utiliser Drush Make pour packager une distribution

↳ Le projet Open Atrium utilise les Makefiles pour distribuer une version packagée sur Drupal.org. http://drupal.org/project/openatrium

↳ Il s'agit d'un cas d'école : un projet exemplaire de ce qu'on peut faire avec les makefiles.

↳ Drupal.org effectue le packaging de distributions Drupal de manière automatisée à partir d'une ou plusieurs makefiles, qui suivent certaines conventions de nommage.

↳ Les pages de documentation à ce sujet, toutes neuves, toutes fraîches, sont sur http://drupal.org/node/642116 (Packaging a distribution on Drupal.org)

Page 16: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 16 / 19

Builder Open Atrium à partir de Drupal.org

↳ 1. On télécharge : build-openatrium.make

drupal-org-core.make

↳ 2. On lance : drush make build-openatrium.make atrium

↳ La makefile build-opentrium.make estce qu'on appelle une stub makefile : elle ne sert qu'à télécharger le profil

d'installation qui vient avec sa propre makefile

↳ Démo-Time !

Page 17: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 17 / 19

Ze Power of Ze Makefile !

↳ Patches Installer et télécharger des patches y compris du core de Drupal

↳ Récursivité et inclusions Un profil peut inclure une makefile

Une makefile peut en cacher une autre

↳ Support natif de git !

↳ On peut s'en servir pour packager nos projets : Le dépôt ne contient que le code custom et des makefiles

Un script de build prépare une archive avec la dernière version du projet

Cette archive - le build - est déployé sur le serveur de developpement/intégration/production.

Une excellente présentation d'une architecture de ce type : http://drupalcity.de/sites/default/files/presentation-slides/streamline-your-drupal-development.pdf

Page 18: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Rodolfo Ripado - Alter Way Formation - http://www.alterway.fr/formation 18 / 19

Drush et l'industrialisation du développement Drupal

Postes locaux des développeurs

Code

Déploiement

ImportBD et média

drush fu

drush make

...

drush updatedb

drush fra

drush make

shell aliases

drush sql-sync

drush rsync

Dépôt de codeHg / Git / SVN

Intégration

Production

Page 19: DrupalCamp Lyon 2012 - Industrialiser Drupal avec Drush

Pour me retrouver :

[email protected]

[email protected]

→ @gaspaio

Ou … près de la machine à café dans 5 minutes !

MERCI !