Topics Ci cd L'intégration continue et le développement agile

L'intégration continue et le développement agile


Apprenez-en davantage sur la façon dont l'intégration continue et les méthodologies Agile peuvent se combiner.

Qu'est-ce que le développement agile ?

Le terme Agile fait référence à un ensemble de méthodologies axées sur le développement itératif et la collaboration entre équipes auto-organisées. Ces méthodes reposent sur des processus de gestion de projet rigoureux et une coopération étroite entre les équipes, voire
entre équipes d'équipes.

Bien que vous ayez le choix entre de nombreux frameworks Agile, tous les projets de développement basés sur les principes Agile impliquent une forme de développement continu, tels que la planification continue, les tests continus et l'intégration continue (CI).

Dans le cadre de l'intégration continue (CI), les développeurs mettent progressivement en place un système stable en travaillant sur de petits lots en cycles courts, suivant un des principes alignés sur les méthodes Lean. L'intégration continue est utilisée par les équipes travaillant avec des frameworks Agile et des pipelines CI/CD qui automatisent les compilations, les tests et les déploiements. Alors que la méthodologie Agile concerne la gestion de portefeuilles de projets, l'intégration continue se réfère au processus par lequel les équipes de développement logiciel mettent en œuvre les changements.

Scrum et les autres méthodologies Agile forment en réalité un framework de gestion, et non des pratiques spécifiques d'ingénierie logicielle. Pour obtenir les meilleurs résultats, les équipes doivent combiner ces frameworks Agile avec les bonnes pratiques d'ingénierie logicielle. L'intégration continue est un exemple concret de la façon dont le développement itératif proposé par la méthodologie Agile peut être appliqué en pratique.

Concepts fondamentaux de la méthodologie Agile

La gestion de projet agile permet de gérer des projets complexes en intégrant les changements de manière incrémentielle. Cette méthodologie itérative comprend six éléments essentiels qui servent à suivre les progrès et à créer le produit.

  • User stories : elles décrivent les objectifs du produit du point de vue de l'utilisateur.

  • Feuille de route:  cette vue d'ensemble rassemble les exigences nécessaires pour concrétiser la vision qui sous-tend le produit.

  • Backlog: il classe les exigences du projet par priorité.

  • Plan de sortie des nouvelles versions : il s'agit d'un calendrier des sorties d'un produit fonctionnel et opérationnel.

  • Sprint/itération : désigne l'ensemble des user stories, objectifs et tâches liés au sprint en cours.

  • Incrément : il désigne le produit fonctionnel et opérationnel présenté aux parties prenantes à la fin d'un sprint.

Bien que les méthodologies agiles puissent varier dans leur approche, elles restent toujours fidèles à ce modèle. Les fonctionnalités de gestion de projet dans GitLab s'alignent sur les concepts fondamentaux suivants de l'approche Agile.

Concept Agile Fonctionnalité GitLab
User stories Tickets
Tâches Listes des tâches
Epics Epics
Points/Estimations Poids
Backlog Listes des tickets et labels prioritaires
Sprints Jalons
Graphiques d'avancement burndown Graphiques d'avancement burndown
Tableaux Agile Tableaux des tickets

Workflow de CI dans l'approche Agile

Git est le système de contrôle de version le plus répandu. Il est particulièrement utile aux équipes agiles, dans la mesure où il permet un développement décentralisé et simultané. Des outils comme GitLab facilitent ce processus en organisant le travail autour du code, principalement par le biais de tickets et de merge requests.

Une merge request (MR) est un processus permettant de visualiser les modifications proposées au code source et de collaborer sur celles-ci. Le flux de travail CI d'une équipe qui a adopté une méthodologie Agile intègre généralement les concepts fondamentaux d'Agile, ainsi que les étapes de validation, de merge request, de tests et de déploiement.

Utilisation des labels

Les labels servent à filtrer et à gérer les epics, les tickets et les merge requests. Un projet peut inclure des labels tels que Planning (en phase de planification), In Progress (en cours de traitement), Staging (en phase de préproduction), Reviewed (vérification terminée), etc. Ces labels sont organisés en liste distinct dans le tableau des tickets.

Les tickets permettent aux équipes de collaborer efficacement. Une fois les prochaines étapes définies, un développeur assigné à un ticket peut se mettre au travail et remplacer le label Planning par In Progress.

Code et validation des modifications

Le développeur peut mentionner le ticket correspondant dans son message de validation, puis effectuer un push de ses validations vers une branche de fonctionnalité et créer une merge request. Après la compilation et les tests du code, un membre de l'équipe peut examiner les modifications apportées.

Utilisation des tableaux de tickets par plusieurs équipes

Une fois la revue de code terminée, l'équipe peut supprimer le label In Progress et déplacer le ticket vers le tableau des tickets en phase Staging. L'équipe de déploiement reçoit alors une notification indiquant que le ticket est prêt pour la suite du processus.

Déploiement du code

Une fois la MR approuvée, elle peut être fusionnée dans la branche principale et le ticket peut alors être fermé.

Pourquoi la CI est-elle essentielle pour le développement agile ?

L'intégration continue incite les équipes de développement à implémenter fréquemment de petites modifications au code source. En parallèle, elle les encourage à valider ces modifications en les comparant avec les versions précédentes du code stockées dans les dépôts de contrôle de version. La CI peut de ce fait être considérée comme un pilier du processus Agile. La CI est tellement répandue qu'elle est souvent associée de manière interchangeable avec l'approche Agile. Bien que les deux concepts mettent l'accent sur les petits changements itératifs et progressifs, ils ne se recoupent pas complètement.

La méthode Agile repose sur l'idée que les développeurs doivent pouvoir fournir de petites mises à jour incrémentielles d'un produit ou d'un service. Dans la pratique, cette approche n'est possible que si une entreprise s'engage pleinement dans l'automatisation du pipeline CI/CD. Grâce aux frameworks Agile, les équipes ont les moyens d'agir rapidement et de travailler de manière indépendante. Toutefois, si l'entreprise n'utilise pas activement un pipeline CI/CD, les méthodes Agile sont inutiles.

Le développement agile s'efforce d'obtenir un produit fonctionnel et opérationnel à la fin de chaque sprint. Le produit connaît des améliorations exponentielles à chaque nouveau sprint. Avec la CI, les modifications de code apportées au produit sont continuellement validées par rapport à d'autres modifications. L'intégration continue et les tests continus garantissent que les équipes livrent un produit fonctionnel et opérationnel, puisque les bogues et les problèmes potentiels sont détectés avant d'atteindre l'utilisateur final.

Conclusion

L'intégration continue (CI) est essentielle pour le développement agile, car elle optimise le processus en permettant de petites modifications itératives fréquentes tout en assurant la stabilité du code. Les équipes se servent d'outils d'intégration continue pour automatiser les compilations, les tests et les déploiements, ce qui améliore le workflow global de développement logiciel. Cette automatisation facilite non seulement les revues de code, mais maintient également un environnement de production stable.

En intégrant la CI dans les méthodologies Agile, les entreprises bénéficient d'une qualité logicielle supérieure et d'un processus d'intégration continue fluide. Cette approche conduit à de meilleures performances DevOps et à une livraison de logiciels d'excellente qualité.

Lancez-vous dès maintenant

Découvrez comment la plateforme DevSecOps unifiée de GitLab peut aider votre équipe.