Recommandations pour l’utilisation de l’intégration continue

S’applique à cette recommandation de liste de contrôle d’excellence opérationnelle Azure Well-Architected Framework :

OE :04 Optimisez les processus de développement logiciel et d’assurance qualité en suivant des pratiques éprouvées dans le secteur en matière de développement et de test. Pour une désignation claire des rôles, standardisez les pratiques entre les composants tels que les outils, le contrôle de code source, les modèles de conception d’application, la documentation et les guides de style.

Guide associé : Améliorer la vitesse de génération | Normaliser les outils et processus

À mesure que le code est développé, mis à jour ou même supprimé, le fait de disposer d’une méthode intuitive et sûre pour intégrer ces modifications dans la branche de code main permet aux développeurs de fournir de la valeur.

En tant que développeur, vous pouvez apporter de petites modifications au code, envoyer ces modifications à un dépôt de code et obtenir des commentaires quasi instantanés sur la qualité, la couverture des tests et les bogues introduits. Ce processus vous permet de travailler plus rapidement, avec plus de confiance et moins de risques.

L’intégration continue (CI) est une pratique dans laquelle les systèmes de contrôle de code source et les pipelines de déploiement de logiciels sont intégrés afin de fournir des mécanismes de génération, de test et de commentaires automatisés pour les équipes de développement de logiciels.

Stratégies de conception

L’intégration continue est une pratique de développement logiciel que les développeurs utilisent pour intégrer des mises à jour logicielles à un système de contrôle de code source à une cadence régulière.

Le processus d’intégration continue démarre lorsqu’un ingénieur crée une demande de tirage GitHub pour signaler au système CI que les modifications du code sont prêtes à être intégrées. Dans l’idéal, le processus d’intégration valide le code par rapport à plusieurs bases de référence et tests. Il fournit ensuite des commentaires à l’ingénieur demandeur sur la status de ces tests.

Si les vérifications et les tests de base se passent bien, le processus d’intégration produit et met en scène des ressources qui déploieront le logiciel mis à jour. Ces ressources incluent le code compilé et les images conteneur.

L’intégration continue peut vous aider à fournir des logiciels de haute qualité plus rapidement en effectuant les actions suivantes :

  • Exécutez des tests automatisés sur le code pour fournir une détection précoce des modifications cassants.
  • Exécuter une analyse du code pour garantir les standards, la qualité et la configuration du code
  • Exécutez des vérifications de conformité et de sécurité pour vous assurer que le logiciel n’a pas de vulnérabilités connues.
  • Exécutez des tests d’acceptation ou fonctionnels pour vous assurer que le logiciel fonctionne comme prévu.
  • Fournissez des commentaires rapides sur les problèmes détectés.
  • Le cas échéant, produire des ressources ou des packages déployables qui incluent le code mis à jour

Pipelines d’intégration continue

Pour bénéficier de l’intégration continue, utilisez des solutions logicielles permettant de gérer, d’intégrer et d’automatiser le processus. Une pratique courante consiste à utiliser un pipeline d’intégration continue.

Un pipeline d’intégration continue implique un logiciel (souvent hébergé dans le cloud) qui fournit :

  • Plateforme permettant d’exécuter des tests automatisés.
  • Analyses de conformité.
  • Les rapports.
  • Tous les autres composants qui composent le processus d’intégration continue.

Dans la plupart des cas, le logiciel de pipeline est attaché au contrôle de code source de sorte que lorsque des demandes de tirage sont créées ou que des logiciels sont fusionnés dans une branche spécifique, le pipeline d’intégration continue est exécuté. L’intégration du contrôle de code source offre également la possibilité d’envoyer des commentaires CI directement sur les demandes de tirage.

De nombreuses solutions, telles qu’Azure Pipelines ou GitHub Actions, fournissent les fonctionnalités des pipelines d’intégration continue.

Intégration du contrôle de code source

L’intégration de votre pipeline d’intégration continue à votre système de contrôle de code source est essentielle pour permettre une contributions de code rapide et libre-service.

Le pipeline CI s’exécute sur une demande de tirage nouvellement créée. Le pipeline inclut tous les tests, évaluations de sécurité et autres vérifications. Les résultats des tests CI s’affichent directement dans la demande de tirage pour permettre un retour quasiment en temps réel sur la qualité.

Une autre pratique courante consiste à créer de petits rapports ou des badges qui peuvent être présentés dans le contrôle de code source pour rendre visibles les états de build actuels.

L’illustration suivante montre l’intégration entre GitHub et un pipeline Azure DevOps. Dans cet exemple, la création d’une demande de tirage déclenche un pipeline Azure DevOps. Le pipeline status s’affiche dans la demande de tirage.

Capture d’écran d’un badge de status Azure DevOps dans un dépôt GitHub.

Tester l’intégration

Un élément clé de l’intégration continue est la création et le test continus du code à mesure que les développeurs font du code contributions. Le test des demandes de tirage au fur et à mesure qu’elles sont créées donne un commentaire rapide indiquant que la validation n’a pas introduit de modifications cassants. L’avantage est que les tests dans le pipeline d’intégration continue peuvent être les mêmes que ceux exécutés pendant le développement piloté par les tests.

L’extrait de code suivant montre une étape de test tirée d’un pipeline Azure DevOps. L’étape comporte deux tâches :

  • La première tâche utilise une infrastructure de test Python populaire pour exécuter des tests CI. Ces tests résident dans le contrôle de code source avec le code Python. Les résultats des tests sont affichés dans un fichier nommé test-results.xml.
  • La deuxième tâche utilise les résultats des tests et les publie dans le pipeline Azure DevOps en tant que rapport intégré.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

L’image suivante montre les résultats des tests qui s’affichent dans le portail Azure DevOps.

Capture d’écran des tests de pipeline Azure DevOps dans le portail Azure DevOps.

Échecs de tests

Les tests ayant échoué doivent temporairement bloquer un déploiement et mener à une analyse plus approfondie de ce qui s’est passé. Les tests ayant échoué doivent également entraîner un affinement des tests ou une amélioration de la modification qui a provoqué l’échec des tests.

Badges de résultat CI

De nombreux développeurs montrent que la qualité de leur code est élevée en affichant un badge status dans leur dépôt. L’image suivante montre un badge Azure Pipelines affiché sur le fichier readme pour un projet open source dans GitHub.

Capture d’écran d’un badge Azure Pipelines sur un fichier readme dans GitHub.

Facilitation Azure

Azure DevOps est une collection de services qui vous aident à créer une pratique de développement collaborative, efficace et cohérente.

Azure Pipelines fournit des services de génération et de mise en production pour prendre en charge l’intégration continue et la livraison continue (CI/CD) de vos applications.

GitHub for Actions pour Azure permet l’automatisation des processus CI/CD. Il s’intègre directement à Azure pour simplifier les déploiements. Vous pouvez créer des flux de travail qui créent et testent chaque demande de tirage dans votre référentiel, ou qui déploient des demandes de tirage fusionnées en production.

Découvrez comment créer un pipeline d’intégration continue à l’aide de GitHub ou d’Azure DevOps :

Découvrez comment afficher des badges dans vos dépôts :

Liste de contrôle de l’excellence opérationnelle