Recommandations pour l’utilisation de l’intégration continue
S’applique à cette recommandation de liste de contrôle Azure Well-Architected Framework Operational Excellence :
OE :04 | Optimisez les processus de développement de logiciels et d'assurance qualité en suivant les pratiques éprouvées du secteur d’activité pour les tests et le développement. Pour obtenir une désignation claire de rôle, normaliser 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 connexe : Améliorer la rapidité des outils et processus de normalisation de la vitesse | de génération
À mesure que le code est développé, mis à jour ou même supprimé, avoir une méthode intuitive et sécurisée pour intégrer ces modifications dans la branche de code principale permet aux développeurs de fournir de la valeur.
En tant que développeur, vous pouvez apporter de petites modifications de code, envoyer ces modifications à un référentiel de code et obtenir des commentaires presque instantanés sur la qualité, la couverture des tests et les bogues introduits. Ce processus vous permet de travailler plus rapidement et 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 dans 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 de code sont prêtes à être intégrées. Dans l’idéal, le processus d’intégration valide le code par rapport à plusieurs lignes de base et tests. Il fournit ensuite des commentaires à l’ingénieur demandeur sur l’état de ces tests.
Si les vérifications et les tests de référence s’effectuent correctement, 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 détecter rapidement les changements 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
Automatiser l’intégration continue avec des pipelines
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 les demandes de tirage sont créées ou que les 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, comme Azure Pipelines ou GitHub Actions, fournissent les fonctionnalités des pipelines d’intégration continue.
Intégrer des pipelines avec le 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 des contributions de code libre-service rapides.
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 apparaissent directement dans la demande de tirage pour permettre des commentaires quasiment en temps réel sur la qualité.
Une autre pratique populaire consiste à créer de petits rapports ou badges qui peuvent être présentés dans le contrôle de code source pour rendre les états de build actuels visibles.
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. L’état du pipeline s’affiche dans la demande de tirage.
Incorporer des tests automatisés
Un élément clé de l’intégration continue est la création et le test continus du code, car les développeurs apportent des contributions au code. Le test des demandes de tirage à mesure qu’elles sont créées fournit des commentaires rapides indiquant que la validation n’a pas introduit de changements cassants. L’avantage est que les tests dans le pipeline d’intégration continue peuvent être les mêmes tests que ceux qui s’exécutent 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 se rendent dans un fichier nommé test-results.xml.
- La deuxième tâche consomme 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.
Échecs de tests
Les tests ayant échoué doivent bloquer temporairement 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.
Publier l’état de la build
De nombreux développeurs montrent que leur qualité de code est élevée en affichant un badge d’état dans leur dépôt. L’image suivante montre un badge Azure Pipelines affiché sur le fichier lisez-moi d’un projet open source 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.
Liens connexes
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 :
- Ajouter un badge d’état Azure Pipelines à votre référentiel
- Ajouter un badge d’état de flux de travail GitHub à votre référentiel