Industrialisation Drupal avec Drush Rodolfo Ripado //
Dec 18, 2014
Industrialisation Drupal avec Drush
Rodolfo Ripado //
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
Rodolfo Ripado - Drupal Camp Lyon mai 2012 3 / 19
Un accompagnement open source à 360°
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.
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).
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 !
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
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
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
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
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
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.
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
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 !
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)
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 !
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
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
Pour me retrouver :
→ @gaspaio
Ou … près de la machine à café dans 5 minutes !
MERCI !