SlideShare une entreprise Scribd logo
Drush Make Driven
Development
Qui suis-je ?
Sébastien Corbin
@SebCorbin
Développeur chez Makina Corpus
Drupal depuis 2009
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
Le présent :
Drush Make
Au programme
1. 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"
~toutdéveloppeurayantinstallédrush
Installation : https://drupal.org/project/drush
Documentation : 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 permissions
Meilleure gestion des instances de champs
Rétro-compatible
Projet : https://drupal.org/project/features
Quelques commandes utiles
drushfc#(features-components)listelesproviders:components
drushfefeature_nameprovider:component#(features-export)exporteuncomposant
drushfufeature_name#(features-update)metàjourlescomposants
drushfrfeature_name#(features-revert)rétablitlafeature
drushfra#(features-revert-all)rétablittouteslesfeaturesactivées
drushsiprofile_name#(site-install)installeleprofil
drushmakefile.make#construitlabasedecode
drushccall#préparelecafé
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>
Migrate
Seule contrainte, faire les gestionnaires d'import
Permet une génération / import poussés
Plus parlant que le contenu de devel_generate
Astuces et Bonnes
pratiques
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
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"
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"
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";
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...
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 projet
en cours
puis ne fonctionner que sur des hook_update_N()
Lors de la mise en prod
chmod-xinstall.sh
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
Les fichiers d'exemple de Migrate, *.make seront bientôt mis en ligne sur le
Contribution
blog de Makina
Merci
Drush make driven development

Contenu connexe

PDF
Journée DevOps : Puppet, un outil pour les installer tous
PDF
Julien Maitrehenry - Docker, ça mange quoi au printemps
PPTX
Varnish & blue/green deployments
ODP
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
PDF
Démo puppet et état du projet
PDF
Puppet, la philosophie DevOps
PDF
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
PDF
Git développez autrement
Journée DevOps : Puppet, un outil pour les installer tous
Julien Maitrehenry - Docker, ça mange quoi au printemps
Varnish & blue/green deployments
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Démo puppet et état du projet
Puppet, la philosophie DevOps
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Git développez autrement

Tendances (20)

PPTX
Mixit2014_Puppet_Workshop
PDF
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
PDF
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
PDF
Introduction à docker.io
PDF
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
PPTX
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
PDF
Livre blanc docker
PDF
Configuration Management avec Drupal 8
PDF
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
PPTX
[Meetup] Optimiser ses builds Docker avec BuildKit.
PDF
Workshop mesos docker devoxx fr 2016
PDF
Déploiements avec Docker
ODP
Docker@linuq
PDF
Introduction à Docker et Gaudi
PPTX
Présentation devops&puppet 04112014
PDF
Docker en Production (Docker Paris)
PDF
Rapport systéme embarqué busybox
DOCX
Rapport Kernel Linux - Configuration – Compilation & installation
PDF
Distro Recipes 2013 : Yocto / OpenEmbedded
PDF
NightClazz Docker Découverte
Mixit2014_Puppet_Workshop
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Introduction à docker.io
Meetup Drupal Lyon 2016 - Environnements de dév Drupal automatisés LXC et Ans...
Docker nice meetup #1 construire, déployer et exécuter vos applications, ...
Livre blanc docker
Configuration Management avec Drupal 8
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
[Meetup] Optimiser ses builds Docker avec BuildKit.
Workshop mesos docker devoxx fr 2016
Déploiements avec Docker
Docker@linuq
Introduction à Docker et Gaudi
Présentation devops&puppet 04112014
Docker en Production (Docker Paris)
Rapport systéme embarqué busybox
Rapport Kernel Linux - Configuration – Compilation & installation
Distro Recipes 2013 : Yocto / OpenEmbedded
NightClazz Docker Découverte
Publicité

En vedette (20)

PDF
Continuous Delivery chez LesFurets -- Deep dive Dec 2015
PDF
Exemples et solutions : Difficultés de l’implémentation de SCRUM
PDF
Comment construire sa communauté en partant de zéro : l'exemple Youmiam.
ODP
Avez-vous compris ce que sont les Features toggles ?
PDF
Réussir son startup weekend agile
PDF
Devoxx france 2015 livrer chaque jour ce qui est prêt
PDF
Ionic, ce n'est pas que de l'UI, meetup PhoneGap le 25-05-2015
PDF
Web Mobile : quelles opportunités face aux apps ?
PDF
De la pensée projet à la pensée produit
PDF
Formation Accélérer le time to market
PPT
Loci formation d'architecte
PDF
Git Flow: un processus de développement Agile
PDF
Lean & Agile UX - afterwork Axance
PDF
Le journal d'une tortue qui sprinte autour du monde - Vincent Cleroux
PDF
PPTX
DevExp 2012 methodes agiles SCRUM jesnault
PDF
Valtech - Plateforme Agile
PDF
Scrum au-delà du projet, pour des produits et des organisations
PDF
Rock The Product Map
PPTX
Outils et pratiques agiles pour la définition de produit
Continuous Delivery chez LesFurets -- Deep dive Dec 2015
Exemples et solutions : Difficultés de l’implémentation de SCRUM
Comment construire sa communauté en partant de zéro : l'exemple Youmiam.
Avez-vous compris ce que sont les Features toggles ?
Réussir son startup weekend agile
Devoxx france 2015 livrer chaque jour ce qui est prêt
Ionic, ce n'est pas que de l'UI, meetup PhoneGap le 25-05-2015
Web Mobile : quelles opportunités face aux apps ?
De la pensée projet à la pensée produit
Formation Accélérer le time to market
Loci formation d'architecte
Git Flow: un processus de développement Agile
Lean & Agile UX - afterwork Axance
Le journal d'une tortue qui sprinte autour du monde - Vincent Cleroux
DevExp 2012 methodes agiles SCRUM jesnault
Valtech - Plateforme Agile
Scrum au-delà du projet, pour des produits et des organisations
Rock The Product Map
Outils et pratiques agiles pour la définition de produit
Publicité

Similaire à Drush make driven development (20)

PDF
Configurer GitHub Actions avec Docker et DotNET 8.pdf
ODP
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
PDF
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
PPT
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
PPTX
Introduction à Drupal : Fonctionnalités et Utilisation
PDF
De la chaîne de production au SI géré par des logiciels
PPTX
DRUPAL-CMS-PRESENTATION-WEB2-miniprojet.pptx
PDF
Infrastructure as code drupal
PDF
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
PDF
Midi technique - présentation docker
PPTX
Support : introduction à docker
PDF
DevOps avec Ansible et Docker
PDF
Dev cloud java : la tête dans les nuages
PDF
Spring Boot & Containers - Do's & Don'ts
PPTX
Drupagora - Les clés de la réussite d'un projet Drupal
PDF
Cours Devops Sparks.pptx.pdf
PDF
Compte rendu Blend Web Mix 2015
PDF
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
PDF
Rapport d'installation de Linux Engine X MariaDB PHP5
PDF
docker-workshop-by-rbk.pdf jhuhiuguigugyug
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Gestion de projet Drupal : quelques outils indispensables - OWS - Drupalcamp ...
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
5390997 Support formation : Construire et administrer vos conteneurs avec Doc...
Introduction à Drupal : Fonctionnalités et Utilisation
De la chaîne de production au SI géré par des logiciels
DRUPAL-CMS-PRESENTATION-WEB2-miniprojet.pptx
Infrastructure as code drupal
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
Midi technique - présentation docker
Support : introduction à docker
DevOps avec Ansible et Docker
Dev cloud java : la tête dans les nuages
Spring Boot & Containers - Do's & Don'ts
Drupagora - Les clés de la réussite d'un projet Drupal
Cours Devops Sparks.pptx.pdf
Compte rendu Blend Web Mix 2015
envol08-sgv envol08-sgv envol08-sgv envol08-sgv
Rapport d'installation de Linux Engine X MariaDB PHP5
docker-workshop-by-rbk.pdf jhuhiuguigugyug

Drush make driven development

  • 2. Qui suis-je ? Sébastien Corbin @SebCorbin Développeur chez Makina Corpus Drupal depuis 2009
  • 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
  • 5. Au programme 1. Quelques rappels (Drush et Make, Features, profils, Git, Migrate) 2. Bonnes pratiques et bénéfices 3. Retour d'expérience
  • 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
  • 25. Merci