Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Livraison continue avec Drupal 7

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 43 Publicité

Plus De Contenu Connexe

Les utilisateurs ont également aimé (20)

Similaire à Livraison continue avec Drupal 7 (20)

Publicité

Plus récents (20)

Livraison continue avec Drupal 7

  1. 1. LIVRAISON CONTINUE AVEC DRUPAL 7 A R N A U D H U O N
  2. 2. LE SITE DOIT ÊTRE EN LIGNE DANS UN MOIS ET DEMI, COMMENT ON FAIT ????
  3. 3. ON VA FAIRE ÇA EN AGILE !!!!
  4. 4. MAIS IL FAUT AUSSI FAIRE LE RESTE DU BACKLOG… COMMENT PEUT-ON LIVRER LES MODIFICATIONS EN PRODUCTION LE PLUS SOUVENT POSSIBLE ET SANS RISQUE ?
  5. 5. ON VA FAIRE DE LA LIVRAISON CONTINUE!!!!
  6. 6. EN PRATIQUE, CA CONSISTE EN QUOI ?
  7. 7. CONCEVONS UN « BUILD PIPELINE » POUR D7 Déploiemen t en intégration Déploiemen t en Pré Prod Intégration continue Déploiemen t en production Commit Recette développeu r Recette métier Validation finale
  8. 8. PERMETTEZ MOI D’OUVRIR UNE PARENTHESE
  9. 9. COMMENT PARTAGE T’ON LA CONFIGURATION CONTENUE DANS LA BASE DE DONNÉES ENTRE LES POSTES DES DÉVELOPPEURS ET L’ENVIRONNEMENT DE DÉVELOPPEMENT ?
  10. 10. LA BASE DE DONNÉES DE L’ENVIRONNEMENT DE DÉVELOPPEMENT DOIT ÊTRE LA RÉFÉRENCE POUR TOUS LES DÉVELOPPEURS !
  11. 11. ET COMMENT TRANSPOSE T’ON LA CONFIGURATION D’UN ENVIRONNEMENT À L’AUTRE ?
  12. 12. ON UTILISE FEATURES ET LES HOOK_UPDATE Dans notre cas, 7 features : Pour le contenu Pour les contextes Pour les filtres Pour les images Pour les menus Pour les rôles Pour les vues
  13. 13. JE FERME LA PARENTHESE
  14. 14. EN DETAIL, C’EST QUOI CE PIPELINE ?
  15. 15. Déploiemen t en intégration Déploiemen t en Pré Prod Intégration continue Déploiemen t en production Commit Recette développeu r Recette métier Validation finale
  16. 16. ZOOM SUR L’INTÉGRATION CONTINUE 100% automatisée : Jenkins l’active après chaque commit sur la branche master de notre GIT Déploiement en environnement de développement Validation du déploiement (smoke tests) Lancement des tests d’intégration automatisés
  17. 17. ZOOM SUR LE DÉPLOIEMENT EN INTÉGRATION Lancement manuel suite à une validation manuelle des développeurs: Sauvegarde de la configuration Commit sur la branche « DEV » Merge sur la branche « INT » Déploiement en environnement d’intégration Validation du déploiement
  18. 18. ZOOM SUR LE DÉPLOIEMENT EN PRÉ-PROD Lancement manuel suite à une validation manuelle du métier: Merge sur la branche « PP » Déploiement en environnement de pré-production Validation du déploiement
  19. 19. ZOOM SUR LE DÉPLOIEMENT EN PRODUCTION Lancement manuel par l’équipe de développement suite à un GO du chef de projet Merge sur la branche « PROD » Déploiement en environnement de production Validation du déploiement
  20. 20. ET LA QUALITÉ DU CODE, ÇA FAIT PAS PARTIE DU PIPELINE ?
  21. 21. NON, MAIS C’EST PRIS EN COMPTE ! Revue de code automatisé Revue de code de l’équipe hebdomadaire Tests de performance en continue
  22. 22. ET TECHNIQUEMENT, ÇA SE TRADUIT COMMENT ?
  23. 23. L’INTÉGRATION CONTINUE 100% automatisée Déploiement en environnement de développement -> Capistrano Validation du déploiement -> PHPUnit + Curl Tests d’intégration automatisés -> PHPUnit + Curl
  24. 24. LE DÉPLOIEMENT EN INTÉGRATION Lancement manuel Sauvegarde de la configuration -> Features Update Commit sur la branche « DEV » -> Git commit Merge sur la branche « INT » -> Git merge Déploiement en environnement d’intégration -> Capistrano Validation du déploiement -> PHPUnit + Curl
  25. 25. LE DÉPLOIEMENT EN PRÉ-PROD Lancement manuel Merge sur la branche « PP » -> Git merge Déploiement en environnement de pré-production -> Capistrano Validation du déploiement -> PHPUnit + Curl
  26. 26. LE DÉPLOIEMENT EN PRODUCTION Lancement manuel par l’équipe de développement suite à un GO du chef de projet Merge sur la branche « PROD » -> Git Merge Déploiement en environnement de production -> Capistrano Validation du déploiement -> PHPUnit + Curl
  27. 27. LA QUALITÉ DU CODE Revue de code automatisé -> Coder, LINT, PHPMD, PHPCD Tests de performances -> JMETER
  28. 28. QU’EST-CE QU’IL FAIT, CAPISTRANO ?
  29. 29. SUR N SERVEURS EN PARALLÈLE… Enchainement d’actions sur le gestionnaire de source, le système de fichiers et sur drupal - Sauvegarde de l’ancienne version - Installation des fichiers - Désactivation des features - Mise à jour de la base de données (lancement des hook_update) et réactivation des features
  30. 30. ILS FONT QUOI, LES SMOKE TESTS ?
  31. 31. UNE SUCCESSION DE CURL La home répond (code HTTP 200) Pas de bloc d’erreurs Drupal sur la home Pas d’erreur 404 sur les assets Les blocs importants sont bien présents
  32. 32. ET COMMENT ON MONITORE TOUT CA ?
  33. 33. Buildwall Jenkins Envoie de mail à l’échec d’un job Page de healthcheck utilisée par l’exploitant Courbes d’évolutionde la qualité et des performances
  34. 34. J’AI L’IMPRESSION QU’IL MANQUE QUELQUE CHOSE, NON ?
  35. 35. SI ! LES TESTS UNITAIRES !
  36. 36. PAS DE SOLUTION DE T.U. PERTITENTE EN D7 Simpletest non pertinent -> trop lent Focalisation sur les tests d’intégrations et les revues de code Pas de selenium : ne fonctionnait pas sur notre site (trop de js)
  37. 37. COMMENT CA S’EST FINI ?
  38. 38. Sortie des mini sites dans les temps Une MEP par jour pendant les évènements, faite par les développeurs 0 Rollback Une qualité de code au top
  39. 39. QUE RETENIR ?
  40. 40. Concevez votre pipeline le plus tôt possible ! Maitrisez Git, Drush et Features ! Testez votre pipeline avant la mise en ligne initiale ! Sachez tester de façon pertinente, que soit pour les tests d’intégration et les smokes test ! Monitorez !
  41. 41. ahuon@octo.com @arnaudhuon

×