Qu'est-ce qu'une chaine de CICD ?
La CI/CD, ou Continous Integration/Continous Deployment (parfois Continuous Delivery), est une pratique de développement de logiciels qui se concentre sur l'automatisation et l'optimisation du processus de construction, de test et de déploiement des modifications logicielles.
Son objectif est de livrer rapidement et de manière fiable des logiciels en intégrant fréquemment les changements de code, en exécutant des tests automatisés et en les déployant de manière continue dans des environnements de production.
Continuous Integration
L'Intégration Continue (CI) regroupe l'ensemble des processus de fusion des modifications de code de plusieurs développeurs dans un référentiel partagé. Chaque modification de code déclenche un processus de construction automatisé, où le code est compilé, les dépendances sont résolues et les tests unitaires sont exécutés. Le but de la CI est de détecter tôt les problèmes d'intégration et les bugs en intégrant fréquemment les changements de code, permettant aux équipes de les résoudre avant qu'ils ne s'aggravent.
Continuous Delivery
Le Déploiement Continu (CD) va encore plus loin en automatisant le processus de déploiement après une intégration et des tests réussis. Cela implique de conditionner le logiciel, de configurer l'environnement de déploiement et de le déployer sur différentes étapes, telles que le développement, les tests, la mise en scène et la production. L'objectif est de disposer d'un pipeline fiable et automatisé capable de livrer rapidement et de manière cohérente les modifications logicielles aux utilisateurs ou aux clients.
Les principes clés
Les principes clés de la CI/CD incluent :
- Automatisation : Tout le processus, de l'intégration du code au déploiement, doit être automatisé autant que possible pour réduire les efforts manuels et les erreurs humaines.
- Amélioration continue : Les tests automatisés, l'analyse du code et les contrôles de qualité fournissent des informations en continu aux développeurs sur la qualité et la fiabilité du code produits, leur permettant d'identifier et de corriger rapidement les problèmes.
- Intégration continue : Les modifications de code sont intégrées fréquemment, ce qui permet aux équipes d'identifier et de résoudre rapidement les problèmes d'intégration.
- Déploiement continu : Les changements sont déployés automatiquement dans différents environnements, garantissant ainsi qu'ils peuvent être publiés rapidement et de manière fiable chaque fois que nécessaire.
- Gestion de version : Un système de gestion de version robuste, tel que Git, est essentiel pour gérer les modifications de code, les branches et les fusionnements dans un environnement collaboratif.
Les pratiques de la CI/CD aident à rationaliser le cycle de développement des logiciels, à améliorer la collaboration entre les membres de l'équipe, à accélérer le délai de mise sur le marché et à maintenir une qualité logicielle élevée grâce aux processus automatisés de test et de déploiement.
Les outils disponibles
Un grand nombre d'outils permettent de mettre en place des chaines de CICD :
- Jenkins
- Circle CI
- Travis CI
- Azure Pipelines
- Github Actions
- Gitlab CICD
- ...
Certains proposent uniquement des fonctionnalités de CICD, tandis que d'autres intégrent les fonctionnalités de CICD au sein d'une plateforme de développement logiciel plus complète (Azure Pipelines, Github Actions, Gitlab CICD).
Gitlab
Gitlab est une plateforme de développement logiciel intégrant toutes les étapes de développement logiciel, depuis la conception et la planification, jusqu'à la livraison, en passant par le développement collaboratif du code et la gestion des incidents.
Gitlab est disponibles sous plusieurs offres et versions :
- Saas (gitlab.com) vs self-hosted
- Community Edition vs Entreprise Edition vs Ultime Edition
Quelques précisions sur le contexte de la formation
Cette formation portera sur ce qu'il est possible de mettre en place au sein de l'offre SaaS communautaire (gitlab.com)
Les versions Entreprise et Ultimate apportent relativement peu de nouvelles fonctionnalités par rapport à ce qui est déjà proposé dans l'offre gratuite.
La version self-hosted est très proche de l'offre SaaS en terme de fonctionnalités disponibles.
La documentation de Gitlab (docs.gitlab.com) indique la disponibilité des différentes fonctionnalités selon les version de Gitlab utilisées.
!
!
!