Level-up your CI experience
Naviguer au-delà de la frustration lors de l'implémentation
des chaînes CI/CD
Qui suis-je ?
Frédéric Léger
La CI ça craint (si, si) !
Photo de Annie Spratt
● Je ne vais (probablement) pas révolutionner votre pratique de la CI/CD 😊
● L’idée est de partager le constat…
● Et d’ébaucher quelques pistes et solutions ensemble…
Disclaimer
Un jeudi matin comme tous les autres …
Moi, quand je sais que j’ai une
nouvelle CI à écrire …
Posons le problème
● L’expérience de développement d’une CI n’est pas optimale
○ Des aller-retours inutiles
○ Manque de boucles de feedbacks efficaces
○ Pas de possibilité de tester une modification de CI simplement
○ CI non portable / absence de vrai standard / technos propriétaires
○ Le YAML est frustrant
○ Le fonctionnel transpire beaucoup trop dans ma CI/CD
Photo by Aaron Bockover
● Perte de temps
● Perte de €€€
● Impact écologique
● Sentiment de frustration
● Possibilités techniques et fonctionnelles faibles
Posons le problème
https://gitlab.com/CalcProgrammer1/OpenRGB/-/blob/master/.gitlab-ci.yml
Des preuves ?
Concept CIX
Continuous Integration
Xperience
e
● Developer Experience appliquée à la CI
○ Supprimer la frustration
○ Fluidifier le quotidien
○ En utilisant les outils que je connais déjà
○ Testable
○ Observable
○ Portable
Concept CIX
Des pistes …
Photo de Austin Chan sur Unsplash
Simplifier sa CI
● Utilisez des hooks de pre-commit
● Adopter une approche failfast par défaut
● Votre CI devrait (peut-être) juste lancer des scripts
● I just “make ci”
● Use the containers luke !
● Docker vs Docker-compose vs Kubernetes
● Notions de CI templates
○ Gitlab
○ to-be-continuous.gitlab.io
● Notions de marketplace de CI
○ R2Devops
○ Github Actions marketplace
Simplifier sa CI
R2Devops
Simuler la CI en local
● Gitlab : Lancer le runner en local
○ Ressources limitées
○ Multi-arch ?
○ Mettre à jour
○ Variables
○ Quelques issues
● Github: act
○ Idem Gitlab
○ Quelques issues (176)
● Autres
○ ???
Drone CI
● kubernetes + CRD ⇒ Portable ✅
● Code source local ⇒ Git ? ❌
● Projet en sommeil ?
Tekton
● kubernetes + CRD ⇒ Portable ✅
● Code source local ⇒ Git ? ❌
● Possiblement complexe à setup ?
Dagger
● Un outil de CI portable ✅
● Multiples langages ✅
● Possibilités de construire des modules réutilisables ✅
● Tests unitaires ✅
● Cache ✅
● Pas complétement sec 🤔
Dagger
Werf
● Projet CNCF
● Très orienté kubernetes workflow
● Intégrations git workflows + docker hub workflow
● Framework pour des builds reproductibles
● Tout se fait dans des conteneurs
● Langage proche d’un Dockerfile
Earthly
Démo
https://github.com/webofmars/meetup-ci-paradox
● Fork de l’application API conduit (realworld)
● CI
○ Pre-commit hooks
○ Image docker prod
○ Image docker dev
○ Lint
○ Tests unitaires
○ Tests fonctionnels
○ Publication des images docker
● Adoption de GitOps massive
● Simplifie grandement le problème
● Bien souvent ce n’est pas la CD que je veux tester (quoique…)
Mais tu ne parles pas de CD en fait ???
Conclusion(s)
Photo de Alexander Schimmeck sur Unsplash
Récap
webofmars.com
www.linkedin.com/in/frederic-leger/
Quelques Liens
www.malt.fr/profile/webofmars
meetup.com/Devops-Aix-
Marseille
ibd.sh/openbar
Quelques Liens
Photo de Wilhelm Gunkel sur Unsplash
Questions
Photo de Patrick Schneider sur Unsplash

Level up your ci-cd experience