🚀 Ne manquez pas notre prochaine session de formation intensive sur les Tests Logiciels !
Qu’est-ce que l’approche CI/CD ?
Mise à jour le 23 mai 2024
Qu’est ce que l’approche CI/CD ?
L’approche CI/CD est une pratique de développement logiciel qui permet aux développeurs d’intègrer d’une façon régulière leurs nouvelles modifications de code au dépôt central.
Le but principal de l’intégration continue est de trouver les bugs et de les corriger assez rapidement afin d’assurer une bonne qualité des logiciels et de réduire le temps et l’effort à consacrer pour mettre à jour le logiciel. Des méthodes de rollback sont également possibles à mettre en place pour garantir la stabilité et la fiabilité des systèmes.
Qu ‘est ce que l’Intégration continue (CI) ?
La pratique de l’intégration continue (CI) consiste à automatiser l’intégration des modifications de code effectuées par les développeurs dans un référentiel de code source partagé. Cela permet de détecter et de corriger les problèmes de code dès les premiers stades du développement, avant qu’ils ne se propagent aux étapes ultérieures.
Qu ‘est ce que Distribution et/ou déploiement continus (CD) ?
La distribution et/ou le déploiement continus (CD) représentent un processus en deux volets qui englobe l’intégration, les tests et la distribution des modifications apportées au code.
Distribution continue: Elle se concentre sur le déploiement automatique des modifications du code dans des environnements de test et de pré-production. Cela permet de vérifier la fonctionnalité et la stabilité du code avant son déploiement en production.
Déploiement continu: Il va plus loin que la distribution continue en automatisant le déploiement des mises à jour directement dans les environnements de production. Cela permet de livrer de nouvelles fonctionnalités et corrections de bugs aux utilisateurs finaux le plus rapidement possible.
En quoi la CI a révolutionné le monde du développement logiciel ?
Il y a un peu plus d’une décennie, bien avant la mise en place de la méthode d’intégration continue (CI), les développeurs travaillaient chacun de leur côté et développaient pendant de longues semaines. Une fois leurs tâches terminées, ils pensent alors à intégrer leurs travaux. La fusion entre les différents codes était ainsi chronophage et engendrait des bugs complexes. Ceci avait pour cause un ralentissement au niveau des livraisons des mises à jour pour le client.
Quelles sont les étapes du Pipeline CI/CD?
1/Build : Cette étape consiste à compiler le code et ses dépendances. Assurez-vous que la compilation échoue si des tests échouent.
2/Tests Unitaires : Exécuter les tests unitaires après le build. Si des tests échouent, le pipeline doit également échouer.
3/Analyse Statique : Utiliser des outils comme SonarQube pour analyser la qualité du code.
4/Tests d’Intégration : Déployer l’application dans un environnement de test et exécuter les tests d’intégration.
5/Déploiement de Préproduction : Déployer l’application dans un environnement similaire à la production pour les tests de validation.
6/Tests de Performance et de Sécurité : Exécuter ces tests dans l’environnement de préproduction.
7/Déploiement en Production : Si tous les tests passent, on peut alors déployer l’application en production.
Il faut,cependant, penser à configurer un mécanisme de rollback pour revenir à la version stable précédente en cas d’échec en production.
Un système de notifications doit être mis en place . Ce systéme informe l’équipe des résultats des tests et des statuts du pipeline via email, slack ou autre moyen de communication.
Quels rôles ont les tests automatisés dans le cycle de vie du processus CI/CD?
L’intégration des tests dans un pipeline CI/CD (Continuous Integration/Continuous Deployment) est essentielle pour assurer la qualité et la stabilité du logiciel à chaque étape de son développement.
Il faut ainsi écrire des scripts pour automatiser l’exécution des tests et les intégrer dans les étapes appropriées du pipeline CI/CD. Il faut également configurer des rapports automatiques pour visualiser les résultats des tests.
Ces tests permettront :
1. Une vérification continue via la détection précoce des Bugs et la réduction des régressions.
Ceci est le résultat de l’exécution des tests automatisés après chaque commit et en ré-exécutant les tests existants à chaque modification afin de s’assurer que les nouvelles fonctionnalités n’introduisent pas de régressions.
2. Une assurance qualité grâce aux :
•Tests Unitaires : Vérifient que chaque composant ou module fonctionne correctement de manière isolée.
•Tests d’Intégration : Assurent que les différents modules ou services interagissent correctement entre eux.
•Test de Régression : Garantissent que les fonctionnalités existantes continuent de fonctionner comme prévu après des modifications de code.
3. Une efficacité et vitesse
• Exécution Rapide : Les tests automatisés sont beaucoup plus rapides que les tests manuels.
• Parallélisation : Les tests peuvent être exécutés en parallèle pour réduire encore plus le temps de validation.
4. Une consistance et fiabilité
• Standardisation : Les tests automatisés assurent une exécution uniforme et sans erreur humaine, contrairement aux tests manuels qui peuvent varier en fonction de l’exécutant.
• Documentation Vivante : Les tests automatisés servent également de documentation vivante sur ce que le code est censé faire.
5. Une facilitation du Déploiement Continu
•Pipeline de Build et de Test Automatisé : Intégration des tests dans le pipeline CI/CD garantit que le code est constamment validé et prêt à être déployé.
•Déploiement en Production Confiant : La réussite des tests automatisés à chaque étape du pipeline permet de déployer en production avec une plus grande confiance.
6. Un feedback continu
•Feedback aux Développeurs : Les tests automatisés fournissent un feedback immédiat aux développeurs, permettant des corrections rapides et continues.
•Rapports et Alertes : Génèrent des rapports de tests et envoient des alertes en cas d’échec, facilitant la gestion proactive des problèmes.
7. Un Support à l’Intégration et à la Livraison
•Intégration Continue : En vérifiant continuellement que les nouvelles fonctionnalités peuvent être intégrées sans problème, les tests automatisés facilitent l’intégration continue.
•Livraison Continue : Permettent une livraison rapide et fréquente des nouvelles versions du logiciel en production, grâce à la validation constante du code.
8. Tests de Performance et de Sécurité
•Tests de Performance : Mesurent la performance de l’application sous différentes charges pour s’assurer qu’elle répond aux exigences.
•Tests de Sécurité : Vérifient les vulnérabilités et assurent que le code est sécurisé contre les attaques potentielles.