Continuous Integration / Continuous Delivery

Le texte français est donné à la suite.

What is Continuous Integration and Continuous Delivery

The diagram is meant to show at a high level the flow of a CI (Continuous Integration) / CD (Continuous Deployment) pipeline and provide guidance for your implementation.

CI/CD Pipeline

Continuous integration establishes a consistent and automated way to apply code changes, test and package applications. Teams practicing continuous integration merge their changes back to the main branch as often as possible and changes are validated by running automated tests against the build. With automation and consistency in the process, teams commit code changes more frequently, which leads to better collaboration, software quality and avoid integration issues. Continuous integration puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch.

Continuous delivery is an extension of continuous integration to make sure that you can release new changes, meaning the artifact packaged in CI, to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button to your environments, including production.

Continuous deployment goes one steps further then continuous delivery as it removes any human intervention in the process. In this practice every change that passes all stages of your production pipeline is released to your customers therefore maturity, rigor and discipline is required for its implementation.

Modern tools, such as Azure DevOps and GitLab, support CI/CD pipelines with slight variations in their implementation, terminology and may combine some of the steps described in this document. These tools help you implement and manage your pipeline and help you automate many of the steps discussed. The pipeline is executed in a sequence and therefore a step needs to be satisfied before moving to the next step.

The diagram shows 3 opportunities for testing which could include but not limited to the following types of testing: • Code Quality • Unit Tests • Integration • Regression • End to End Tests • Accessibility • Security • Performance • Formatting Standards • Code Linting • Variable scoping • Secrets Management • Common Vulnerability Exposures • License Compliance • Connectivity

The pipeline has 2 approval steps that would be defined by your team and partners.

The success of your pipeline will depend on the implementation and maturity of each of these steps. Each steps should be an opportunity for your team to question current practices, improve on them and favor automation.

Pipeline Steps

Create Work Item

Branch

Change Tests

Change Code

Execute Tests

Code Review

Approve Changes

Merge

Close Work Item

Build

Build - Execute Tests

Build - Label/Version Source Code

Build - Publish to Artifact Repository

Approve Deployment (Optional)

Deploy

Execute Tests (Again)

Notify Stakeholders

If required, the notification is triggered by the successful deployment and execution of tests

Monitor/Support

References

Continuous Integration and Continuous Delivery Explained

Continuous Integration vs Delivery vs Deployment

Introduction to GitLab Flow


Texte français:

Qu’est-ce que l’intégration continue et la livraison continue

Le diagramme vise à présenter à un niveau général le déroulement d’un pipeline CI (Intégration continue) / CD (Déploiement continu) et à guider votre mise en œuvre.

Pipeline CI/CD

L’intégration continue établit une méthode cohérente et automatisée pour appliquer les modifications au code, tester et packager les applications. Les équipes qui pratiquent l’intégration continue fusionnent leurs modifications dans la branche principale le plus souvent possible, et les changements sont validés par l’exécution de tests automatisés lors de la compilation. Grâce à l’automatisation et à la cohérence du processus, les équipes publient des modifications de code plus fréquemment, ce qui améliore la collaboration, la qualité logicielle et évite les problèmes d’intégration. L’intégration continue met un accent particulier sur l’automatisation des tests pour s’assurer que l’application ne subit pas de régression lors de l’intégration de nouveaux commits dans la branche principale.

La livraison continue est une extension de l’intégration continue qui garantit la mise à disposition rapide et durable de nouveaux changements (c’est-à-dire l’artefact produit lors de la CI) aux utilisateurs. Cela signifie qu’en plus d’avoir automatisé vos tests, vous avez également automatisé votre processus de publication, et vous pouvez déployer votre application à tout moment en cliquant sur un bouton vers vos environnements, y compris la production.

Le déploiement continu va un cran plus loin que la livraison continue en supprimant toute intervention humaine du processus. Avec cette pratique, chaque modification réussissant toutes les étapes de votre pipeline de production est automatiquement mise à la disposition de vos utilisateurs; sa mise en œuvre exige donc maturité, rigueur et discipline.

Les outils modernes tels qu’Azure DevOps et GitLab prennent en charge les pipelines CI/CD avec de légères variations dans leur mise en œuvre et leur terminologie, et peuvent combiner certaines des étapes décrites dans ce document. Ces outils vous aident à implémenter et gérer votre pipeline ainsi qu’à automatiser nombre de ces étapes. Le pipeline est exécuté de manière séquentielle; chaque étape doit donc être validée avant de passer à la suivante.

Le diagramme illustre 3 occasions de tests qui peuvent inclure (sans s’y limiter) les types suivants : • Qualité du code • Tests unitaires • Intégration • Régression • Tests de bout en bout • Accessibilité • Sécurité • Performance • Normes de formatage • Analyse statique de code (Linting) • Portée des variables • Gestion des secrets • Vulnérabilités courantes (CVE) • Conformité des licences • Connectivité

Le pipeline comprend 2 étapes d’approbation définies par votre équipe et vos partenaires.

Le succès de votre pipeline dépendra de la mise en œuvre et de la maturité de chacune de ces étapes. Chaque étape devrait être une occasion pour votre équipe de réévaluer les pratiques courantes, de les optimiser et de privilégier l’automatisation.

Étapes du pipeline

Créer un élément de travail

Créer une branche

Modifier les tests

Modifier le code

Exécuter les tests

Révision de code

Approuver les changements

Fusionner

Fermer l’élément de travail

Compiler (Build)

Compiler - Exécuter les tests

Compiler - Étiqueter / Versionner le code source

Compiler - Publier dans le référentiel d’artefacts

Approuver le déploiement (Optionnel)

Déployer

Exécuter les tests (de nouveau)

Informer les parties prenantes

Au besoin, une notification est transmise automatiquement à la suite du déploiement et de l’exécution réussie des tests.

Surveillance et soutien

Références

Continuous Integration and Continuous Delivery Explained (en anglais)

Continuous Integration vs Delivery vs Deployment (en anglais)

Introduction to GitLab Flow (en anglais)