drush make driven development
DESCRIPTION
Présentation de drush make et de quelques astuces pour industrialiser et générer des Sites Drupal. DrupalCamp Paris 2013TRANSCRIPT
![Page 1: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/1.jpg)
Drush Make DrivenDevelopment
![Page 2: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/2.jpg)
Qui suis-je ?Sébastien Corbin
@SebCorbin
Développeur chez Makina Corpus
Drupal depuis 2009
![Page 3: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/3.jpg)
Petit historique de la gestion decode sous Drupal
1. En premier le FTP, pour les vieux des années 80
2. Après y'a eu Git, pour éviter de perdre ses fichiers durant le transfert,mais c'est so 2005
3. Ensuite y'a eu Features, parce que la conf en BDD: pas top, mais çac'est encore so 2009
![Page 4: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/4.jpg)
Le présent :Drush Make
![Page 5: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/5.jpg)
Au programme1. Quelques rappels (Drush et Make, Features, profils, Git, Migrate)
2. Bonnes pratiques et bénéfices
3. Retour d'expérience
![Page 6: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/6.jpg)
Quelques rappels
![Page 7: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/7.jpg)
Drush & Drush Make
"Drush, c'est la vie"~ tout développeur ayant installé drush
Installation : https://drupal.org/project/drushDocumentation : http://www.drush.org/
![Page 8: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/8.jpg)
Features
Features 1.0 Toujours viable tant que la v2 n'est pas stable
Features 2.0-rc1 Meilleure gestion des permissionsMeilleure gestion des instances de champs Rétro-compatible
Projet : https://drupal.org/project/features
![Page 9: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/9.jpg)
Quelques commandes utilesdrush fc # (features-components) liste les providers:components
drush fe feature_name provider:component # (features-export) exporte un composant
drush fu feature_name # (features-update) met à jour les composants
drush fr feature_name # (features-revert) rétablit la feature
drush fra # (features-revert-all) rétablit toutes les features activées
drush si profile_name # (site-install) installe le profil
drush make file.make # construit la base de code
drush cc all # prépare le café
![Page 10: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/10.jpg)
MigrateOn a pas trouvé mieux pour intégrer rapidement du contenu à partir de
fichiers XML<?xml version="1.0"?> <nodes> <node id="actualites-page" title="Nos actualités" language="fr"> <fields> <body> Lorem Ipsum Dolor Est Lorem Ipsum Dolor Est Lorem Ipsum Dolor Est Ipsum Dolor Est Lorem Ipsum Dolor Est Lorem Ipsum Dolor Est Lorem Dolor Est Lorem Ipsum Dolor Est Lorem Ipsum Dolor Est </body> <field_image>**GENERATE**</field_image> <field_date>now -10 days</field_date> </fields> </node> </nodes>
![Page 11: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/11.jpg)
MigrateSeule contrainte, faire les gestionnaires d'import
Permet une génération / import poussés
Plus parlant que le contenu de devel_generate
![Page 12: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/12.jpg)
Astuces et Bonnespratiques
![Page 13: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/13.jpg)
Drush MakeUtile pour avoir la dernière version des projets
Spécifier les versions des projets que vous voulez patcher
Penser aux includes pour les modules souvent utilisées
Les patchs, c'est la vie, mangez-en
![Page 14: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/14.jpg)
Un module en dev sanstraduction ?
Oubliez :
La traduction sera installée à l'activation du module
projects[nodequeue][version] = 3.x-devlibraries[nodequeue_fr][download][type] = "file"libraries[nodequeue_fr][download][url] = "http://ftp.drupal.org/files/translations/7.x/nodequeue/nodequeue-7.x-2.0-beta1.fr.po"libraries[nodequeue_fr][destination] = "modules/nodequeue"libraries[nodequeue_fr][directory_name] = "translations"libraries[nodequeue_fr][download][filename] = "fr.po"
![Page 15: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/15.jpg)
Exemple bête de contribCKEditor ajoute des CRLF au lieu de LF à sa config exportée via Features(dû au navigateur)
drush clone ckeditor
Fix du code embêtant, puis
Partage/Mise en ligne de la solution sur drupal.org git diff > adieu_souci.patch
https://drupal.org/node/1960268
Et enfin utilisation dans le projet projects[ckeditor][patch][] = "http://drupal.org/files/CRLF-issue.patch"
![Page 16: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/16.jpg)
Drush et ses pluginsDrush issue queue
Support de git et des branches, indispensable au maintainers de module
Drush issue queue extras
drush patch 1960268#4 #applique le patch du 4e comment de l'issue drush iq-diff > file.patch #crée un patch formaté avec les infos de l'auteur
Poste directement le diff courant (formaté) dans l'issue
Pensez aux alias drush, dans drushrc.php
Clone un module depuis git.drupal.org avec choix de la version
drush iq-submit
$options['shell-aliases']['clone'] = "dl --package-handler=git_drupalorg --select";
![Page 17: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/17.jpg)
Exemple de fichier bash d'install#!/bin/bashif [[ "$#" > 0 && $1 = "make" ]]then#execute drush make./"̀dirname "$0"̀/make.sh";fi. "profile_conf.sh";
#store session informations if site already installedSESSIONS="$(mktemp 'sessions_XXXXXXXXXX')"; trap 'rm "${SESSIONS}"' EXITtest "̀drush st bootstrap --pipe 2>/dev/null̀" == "Successful" && drush sql-dump --tables-list=sessions >
$drush si "${PROFILE}" --locale="${LOCALE}" --account-mail="${MAIL}" # etc...
#restore sessions if they were savedtest -f "${SESSIONS}" && drush sqlc < "${SESSIONS}" && echo "Sessions restored"
# features
Scroller...
![Page 18: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/18.jpg)
Retour d'XP
![Page 19: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/19.jpg)
L'intégrateur arrivant dans le projet à un site représentatif et qui fonctionne../bin/make.sh
Un peu de configuration...../bin/install.sh
Démo ! (ouais je suis un fou)
![Page 20: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/20.jpg)
La génération du site permet à un dev d'entrer facilement dans un projeten cours
![Page 21: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/21.jpg)
puis ne fonctionner que sur des hook_update_N()
Lors de la mise en prodchmod -x install.sh
![Page 22: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/22.jpg)
Le recettage est toujours possible (sous réserve de commits clean)
![Page 23: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/23.jpg)
Possibilité de coupler ceci en mode intégration continue avec jenkins oudes git-hooks
Development -> re-génération automatique du sitePré-production -> génération manuelle par le chef de projet
![Page 24: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/24.jpg)
Les fichiers d'exemple de Migrate, *.make seront bientôt mis en ligne sur le
Contribution
blog de Makina
![Page 25: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/25.jpg)
Merci
![Page 26: Drush make driven development](https://reader033.vdocuments.site/reader033/viewer/2022050907/5586e770d8b42a79798b478b/html5/thumbnails/26.jpg)