3. Petit historique de la gestion de
code 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 ça
c'est encore so 2009
7. Drush & Drush Make
"Drush, c'est la vie"
~toutdéveloppeurayantinstallédrush
Installation : https://drupal.org/project/drush
Documentation : http://www.drush.org/
8. Features
Features 1.0
Toujours viable tant que la v2 n'est pas stable
Features 2.0-rc1
Meilleure gestion des permissions
Meilleure gestion des instances de champs
Rétro-compatible
Projet : https://drupal.org/project/features
10. Migrate
On a pas trouvé mieux pour intégrer rapidement du contenu à partir de
fichiers XML
<?xmlversion="1.0"?>
<nodes>
<nodeid="actualites-page"title="Nosactualités"language="fr">
<fields>
<body>
LoremIpsumDolorEstLoremIpsumDolorEstLoremIpsumDolorEstIpsumDolorEstLoremIps
</body>
<field_image>**GENERATE**</field_image>
<field_date>now-10days</field_date>
</fields>
</node>
</nodes>
11. Migrate
Seule contrainte, faire les gestionnaires d'import
Permet une génération / import poussés
Plus parlant que le contenu de devel_generate
13. Drush Make
Utile 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
14. Un module en dev sans
traduction ?
Oubliez :
La traduction sera installée à l'activation du module
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/nodequ
libraries[nodequeue_fr][destination]="modules/nodequeue"
libraries[nodequeue_fr][directory_name]="translations"
libraries[nodequeue_fr][download][filename]="fr.po"
15. Exemple bête de contrib
CKEditor ajoute des CRLF au lieu de LF à sa config exportée via Features
(dû au navigateur)
drushcloneckeditor
Fix du code embêtant, puis
Partage/Mise en ligne de la solution sur drupal.org
gitdiff>adieu_souci.patch
https://drupal.org/node/1960268
Et enfin utilisation dans le projet
projects[ckeditor][patch][]="http://drupal.org/files/CRLF-issue.patch"
16. Drush et ses plugins
Drush issue queue
Supportdegitetdesbranches,indispensableaumaintainersdemodule
Drush issue queue extras
drushpatch1960268#4#appliquelepatchdu4ecommentdel'issue
drushiq-diff>file.patch#créeunpatchformatéaveclesinfosdel'auteur
Postedirectementlediffcourant(formaté)dansl'issue
Pensez aux alias drush, dans drushrc.php
Cloneunmoduledepuisgit.drupal.orgavecchoixdelaversion
drushiq-submit
$options['shell-aliases']['clone']="dl--package-handler=git_drupalorg--select";
17. Exemple de fichier bash d'install
#!/bin/bash
if[["$#">0&&$1="make"]]
then
#executedrushmake
./"`dirname"$0"`/make.sh";
fi
."profile_conf.sh";
#storesessioninformationsifsitealreadyinstalled
SESSIONS="$(mktemp'sessions_XXXXXXXXXX')";trap'rm"${SESSIONS}"'EXIT
test"`drushstbootstrap--pipe2>/dev/null`"=="Successful"&&drushsql-dump--tables-list=sessions>
$drushsi"${PROFILE}"--locale="${LOCALE}"--account-mail="${MAIL}"#etc...
#restoresessionsiftheyweresaved
test-f"${SESSIONS}"&&drushsqlc<"${SESSIONS}"&&echo"Sessionsrestored"
#features
Scroller...
19. 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)
20. La génération du site permet à un dev d'entrer facilement dans un projet
en cours
21. puis ne fonctionner que sur des hook_update_N()
Lors de la mise en prod
chmod-xinstall.sh
22. Le recettage est toujours possible (sous réserve de commits clean)
23. 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
24. Les fichiers d'exemple de Migrate, *.make seront bientôt mis en ligne sur le
Contribution
blog de Makina