Intégration et déploiement continu (CI/CD) avec WordPress


WordCamp Montréal 2019
Bérenger Zyla

Moi

Bérenger

Lead WordPress @Vortex Solution.
WordPress 10+ ans.
Passioné de voyages & photographie.
Super à l'aide à parler devant une foule.

Vous?

Intégration et déploiement continu (CI/CD) avec WordPress

KEOLIS + Orléans Express

KEOLIS + Orléans Express

Principal transporteur interurbain de passagers au Québec.

Site de services, incluant la vente de billets de bus.

KEOLIS + Orléans Express

Les besoins…

  • « Améliorations » (test)
  • Bugfixes (« prochaine mise-en-ligne »)
  • Hotfixes (« là-là, sur la prod »)
  • Nouvelles fonctionnalités (« mois prochain »)
  • Épics (« trimestre prochain »)

KEOLIS + Orléans Express

Les besoins…

  • « Améliorations » (test)
  • Bugfixes (« prochaine mise-en-ligne »)
  • Hotfixes (« là-là, sur la prod »)
  • Nouvelles fonctionnalités (« mois prochain »)
  • Épics (« trimestre prochain »)

KEOLIS + Orléans Express

Les besoins…

  • Besoins d'évolution de l'écosystème
  • Hotfixes
  • Nouvelles APIs
  • Refonte graphique
  • Mises-à-jour de la plateforme
  • Gutenberg / changement d'éditeur
  • Transition de contenus Pages » CPT
  • Refacto
  • Besoins d'évolution de l'écosystème
  • Hotfixes
  • Nouvelles APIs
  • Refonte graphique
  • Mises-à-jour de la plateforme
  • Gutenberg / changement d'éditeur
  • Transition de contenus Pages » CPT
  • Refacto

« On vous présente et livre le tout dans 2 mois? »

CI/CD : Intégration continue / Déploiement continu

Approche traditionnelle :

On développeon développeon développeon développeon développeon développeon développeon développe… … on déploie.

(et on croise les doigts pour que tout le livrable soit accepté)

CI/CD : Intégration continue / Déploiement continu

On développeon déploie

on développeon déploieon développe
on déploieon développeon déploie
on développeon déploieon développe
on déploieon développeon déploie
on développeon déploieon développe
on déploieon développeon déploie
on développeon déploieon développe
on déploieon développeon déploie
on développeon déploieon développe

CI/CD : Intégration continue / Déploiement continu

Avancer le développement de fonctionnalités/correctifs en parallèle, et merger régulièrement pour des livraisons plus rapidement et de façon durable.

Flexibilité, version stable en continu de l'avancement, facilité à corriger, arrêter ou repousser un développement…

CI/CD
Stratégie & Méthodologie

Q1 : Quoi versionner?

Q1 : Quoi versionner?

Projet complet?

Thème & Plugins?

Thème seul?

Outils de gestion de dépendances : Bedrock, Composer,…?

Q1 : Quoi versionner?

Orléans Express :

Projet complet

Le client a son propre repo configuré comme ça

Cela dépend de votre scope de projet, stratégie de déploiement et de mise-à-jour…

Q2 : Comment développer des affaires en parallèle?

Q2 : Comment développer des affaires en parallèle?

Adoption de la méthodologie Git Flow
(publiée par Vincent Driessen).

Approche en branches aux rôles spécifiques autour de releases/versions déployées. Aide à la collaboration, approprié au scaling, et utilisant les PR, expérimentations isolées, versions parallèles tout en minimisant les dépendances…

master, develop, feature/*, hotfix/*, release/*

Q3 : Comment gérer le contenu WordPress?

Q3 : Comment gérer le contenu WordPress?

Bonne nouvelle : Gutenberg stocke la plupart des informations dans le contenu
(vs les post-meta, qui sont plus compliquées à transférer)

Outils de migration de contenu
Migrate DB Pro (ou similaire), et un outil fait-maison pour transférer le contenu page par page (incluant les metas)

Scripts de mise-à-niveau de la BDD
Utiliser dbDelta() (natif WordPress) pour altérer la BDD avec des scripts de mise-à-niveau ou migration

Suivant les possibilités/besoins : snapshots de la BDD par version du site via WP-CLI…

Q4 : Comment être sûr de ne pas tout exploser, quand même?

Q4 : Comment être sûr de ne pas tout exploser, quand même?

Mise en place de tests automatisés sur les chemins critiques.

Chaque nouvelle fonctionnalité intégrée ou mise-à-jour de WordPress (ou autre) appelle le lancement une série de tests unitaires + fonctionnels pour valider le fonctionnement de la plateforme.

Tests de bout en bout sur WordPress : comment automatiser avec CodeceptJS

14h15. Sariha. MB 3.210.

:)

Q5 : Comment automatiser ces tâches fastidieuses?

Q5 : Comment automatiser ces tâches fastidieuses?

  • Lanceur de tâches : GULP, WebPack…
    automatisation d'opérations (compilation, optimisation,…)
  • Déploiements augmentés/automatisés : BuddyWorks, DeployBot… GitLab CI…
    envoi d'une branche/commit au complet + actions
  • WP-CLI
    post-déploiement (supprimer les transients, vider le cache WPRocket, lancer un dbDelta()…)
  • Tests
    test immédiat de la version mise-en-ligne (end-to-end, unitaire, smoke)…
Pipelines
Actions

En résumé

  1. Choix du scope de versionning
  2. Utilisation d'une méthodologie adaptée (Git Flow)
  3. Stratégie de gestion du contenu (migration, scripts d'évolution…)
  4. Tests (fonctionnels, unitaires…)
  5. Automatisation
  6. Repeat and improve!

CI/CD

Intégrer et déployer souvent, que ce soit à l'interne pour le travail d'équipe, ou en staging/beta pour que le client voie son site se construire, et lui permettre, par exemple, de modifier son contenu tout au long de la construction de sa plateforme.

Dévs heureux

Clients contents

Lead serein

Questions? Commentaires?

Merci!

On recherche des talents!


berengerzyla.com/wordcamp-2019


Références

Git Flow : Atlassian / NVIE

Déploiements automatisés : BuddyWorks

Tests fonctionnels : CodeceptJS