"Drush, c'est la vie"~ tout développeur ayant installé drush
Installation : https://drupal.org/project/drush
Documentation : http://www.drush.org/
Projet : https://drupal.org/project/features
drush 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é
On 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>
projects[nodequeue][version] = 3.x-dev
libraries[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"
drush clone ckeditor
git diff > adieu_souci.patch
Partage/Mise en ligne de la solution sur drupal.org
https://drupal.org/node/1960268
projects[ckeditor][patch][] = "http://drupal.org/files/CRLF-issue.patch"
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
Support de git et des branches, indispensable au maintainers de module
drush iq-submit
Poste directement le diff courant (formaté) dans l'issue
$options['shell-aliases']['clone'] = "dl --package-handler=git_drupalorg --select";
Clone un module depuis git.drupal.org avec choix de la version
#!/bin/bash
if [[ "$#" > 0 && $1 = "make" ]]
then
#execute drush make
./"`dirname "$0"`/make.sh";
fi
. "profile_conf.sh";
#store session informations if site already installed
SESSIONS="$(mktemp 'sessions_XXXXXXXXXX')"; trap 'rm "${SESSIONS}"' EXIT
test "`drush st bootstrap --pipe 2>/dev/null`" == "Successful" && drush sql-dump --tables-list=sessions > "${SESSIONS}"
$drush si "${PROFILE}" --locale="${LOCALE}" --account-mail="${MAIL}" # etc...
#restore sessions if they were saved
test -f "${SESSIONS}" && drush sqlc < "${SESSIONS}" && echo "Sessions restored"
# features
drush fra -y --force || exit 1
drush cc all
# migration
drush mar
drush mi My_Migrate_Handler
# generation
drush en devel_generate asset_generate nodequeue_generate -y
drush gena 100 # assets
drush gent ville 15 # terms
drush genc 50 --types=actu,page,faq # content
drush dis devel_generate nodequeue_generate -y
drush sapi-r # index search api
Scroller...
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 projet en cours
Lors de la mise en prod
chmod -x install.sh
puis ne fonctionner que sur des hook_update_N()
Le recettage est toujours possible (sous réserve de commits clean)
Possibilité de coupler ceci en mode intégration continue avec jenkins ou des git-hooks
Development -> re-génération automatique du site
Pré-production -> génération manuelle par le chef de projet