Drush make driven development

Post on 21-Jun-2015

683 views 0 download

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

Drush Make DrivenDevelopment

Qui suis-je ?Sébastien Corbin

@SebCorbin

Développeur chez Makina Corpus

Drupal depuis 2009

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

Le présent :Drush Make

Au programme1. Quelques rappels (Drush et Make, Features, profils, Git, Migrate)

2. Bonnes pratiques et bénéfices

3. Retour d'expérience

Quelques rappels

Drush & Drush Make

"Drush, c'est la vie"~ tout développeur ayant installé drush

Installation : https://drupal.org/project/drushDocumentation : http://www.drush.org/

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

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é

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>

MigrateSeule contrainte, faire les gestionnaires d'import

Permet une génération / import poussés

Plus parlant que le contenu de devel_generate

Astuces et Bonnespratiques

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

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"

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"

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";

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...

Retour d'XP

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)

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

puis ne fonctionner que sur des hook_update_N()

Lors de la mise en prodchmod -x install.sh

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

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

Les fichiers d'exemple de Migrate, *.make seront bientôt mis en ligne sur le

Contribution

blog de Makina

Merci