Partie 1 · Pourquoi
Du « tout à la main » au CI/CD
Le cours part d'une provocation : « Développer, c'est écrire du code (non) ». Quand tu modifies une seule ligne, tu enchaînes en réalité toute une série de commandes : tests, vérification du style, commit, push, construction de l'image Docker, envoi au registry, connexion au serveur de production, mise à jour du conteneur, et même un mail au chef. Voici la liste du cours :
vim src/mypackage/module.py # Make a minor edit pytest -rf --cov=MyApp –cov-report=xml:report.xml # Run tests and coverage black --check --diff # Check linting (code style) git add * # Get ready to commit git commit -m "Fix thingy" # Commit to local repository git push # Push to Git remote docker build -t myapp:latest . # Rebuild docker image docker push --all # Push Docker image to registry ssh user@server # Login to production server docker pull myapp:latest # Pull new image docker restart mycontainer # Restart production container echo "Hey I pushed to prod" | mail -s Update boss@company # Let our boss know
Fais ça dix fois par jour, en équipe, sans jamais te tromper : impossible. D'où la question du cours : « Comment travailler avec tous les outils modernes ? » (et en mode agile). Sous-titre de la présentation : laisser le cloud faire votre taff.
Vérifie que tu as compris
CI : Continuous Integration
L'intégration continue consiste à intégrer en continu les outils de validation dans le processus de développement. Le cours liste cinq bénéfices :
- Détection au plus tôt des problèmes : régression, vulnérabilités, formatage…
- Simplification de la vie de l'équipe : c'est le CI qui fait tout.
- Gain de temps : les tests d'une grosse application peuvent prendre plusieurs heures.
- Traçabilité : tous les résultats sont gardés.
- Collaboration : on peut discuter directement sur l'intégration.
Vérifie que tu as compris
CD : Continuous Deployment / Delivery
Le CD rapproche les environnements de développement et de production :
- publication automatique des applications et librairies ;
- mise en production automatique des mises à jour ;
- extrêmement puissant à l'ère du Cloud.
Attention (point souligné par le cours) : cela suppose une gestion des droits et une validation du code fiables. Automatiser la mise en production d'un code mal validé, c'est automatiser les incidents.
Crédit du cours : documentation GitLab. Le schéma ci-dessus est un résumé ajouté.
Vérifie que tu as compris