La standardisation des outils : les modèles
Nous utilisons tous les mêmes outils. Vous connaissez le dicton ? On ne va pas réinventer la roue, surtout quand on est de moins en moins nombreux à faire de plus en plus de choses !
Là aussi, vous trouverez très utile les modèles suivants, ils diminuent le temps passé à configurer votre environnement de développement, de déploiement, intègrent les meilleures pratiques, en somme vous passez plus rapidement à l’action !
Git – Bitbucket
La gestion de version du code est désormais au cœur de notre travail. Qu’on soit en train de dépanner une urgence ou chercher une passe utile faite par un collègue, on est bien content quand le dépôt est organisé selon une norme familière non ?
Pour répondre à ce besoin, nous avons créé un dépôt Git (travail en cours) qui a pour vocation de fournir des exemples, implémenter les meilleures pratiques et servir de documentation.
Vous y trouverez :
- Une arborescence standardisée (src, build, deploy, pipeline, …)
- Des branches à la nomenclature standardisée
- Une implémentation du modèle Git Flow :
- Une politique de droits par branche
- Une mécanique de livraison par Pull-Request qui nécessitent une approbation
- Un webhook pour déclencher les build sur Jenkins
- Un exemple d’application en conteneurs, déployée sur Kubernetes via un pipeline Jenkins
N’oubliez pas, une fois de plus, ce modèle est sur Git, cela signifie que vous pouvez y apportez vos suggestions, contributions. Ajoutez-y votre dernière trouvaille de pipeline, vos hooks, des exemples de test unitaires. Ensemble nous irons plus vite !
Pour les amateurs de wiki, il existe aussi une page (réservée aux employés) avec des informations connexes.
Les pipelines – Jenkins
Vous avez sûrement déjà entendu parler d’intégration continue, livraison continue, CI/CD?
Ces mots souvent cités peuvent faire penser à un idéal inaccessible: « On ne peut pas livrer en prod automatiquement, comme ça, c’est bien trop risqué!« .
Peut-être qu’en allant jeter un œil aux possibilités offertes par Jenkins dans notre dépôt de référence vous changerez d’avis?
On va concocter des exemples aux petits oignons qui fonctionnent parfaitement avec la structure de dépôt Git normalisée (point ci-dessus)!
À la date de publication de l’article, je n’ai pas eu le temps d’intégrer les exemples dans le dépôt de référence mais j’ai lié les dépôts existants qui implémentes les exemples intéressants
Entre autre vous saurez comment:
- Faire un pipeline multi-branches: (version pdf)
- Plus besoin de configurer un nouveau projet Jenkins pour chaque nouvel environnement
- Vous pouvez faire la promotion de votre code strictement identique d’un environnement à l’autre
- Configurer un pipeline en tant que code
- Grâce à cette approche, votre pipeline aussi
devient versionnable(arf, ce mot n’existe pas encore) peut être géré dans Git. - Vous avez plus de contrôle sur ce que vous voulez faire.
- Grâce à cette approche, votre pipeline aussi
- Adapter votre pipeline à vos besoins
- Choisir les différents stages
- Construction d’une image pour un conteneur
- Déploiement sur Kubernetes/AWS
- Scans de sécurité – à venir
- Tests fonctionnels/unitaires – à venir
- Définir des conditions d’exécution pour chaque stage
- Déclencher l’exécution d’un stage seulement si un fichier spécifique a été modifié (chercher changeset)
- Définir une validation manuelle pour livrer en prod! (chercher autodeploy)
- Choisir les différents stages
Je suis convaincu qu’il existe des perles de configuration cachées sur le compte Bitbucket UQAM ou ailleurs, vous avez probablement passé des minutes des heures ou des jours à faire fonctionner une patente, venez l’ajouter dans le dépôt d’exemple et sauvez du temps à vos collègues.