Drush make driven development

26
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 2013

Transcript of Drush make driven development

Page 1: Drush make driven development

Drush Make DrivenDevelopment

Page 2: Drush make driven development

Qui suis-je ?Sébastien Corbin

@SebCorbin

Développeur chez Makina Corpus

Drupal depuis 2009

Page 3: Drush make driven development

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

Le présent :Drush Make

Page 5: Drush make driven development

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

Quelques rappels

Page 7: Drush make driven development

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

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

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

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

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

Astuces et Bonnespratiques

Page 13: Drush make driven development

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

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

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

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

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

Retour d'XP

Page 19: Drush make driven development

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

La génération du site permet à un dev d'entrer facilement dans un projeten cours

Page 21: Drush make driven development

puis ne fonctionner que sur des hook_update_N()

Lors de la mise en prodchmod -x install.sh

Page 22: Drush make driven development

Le recettage est toujours possible (sous réserve de commits clean)

Page 23: Drush make driven development

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

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

Merci

Page 26: Drush make driven development