0Pricing
Cloud & IT Cert Prep · Leçon

Création d’un pipeline d’intégration continue avec Azure Pipelines

Définissez un pipeline YAML déclenché par les demandes de tirage, exécutez des tests unitaires et produisez un artefact de compilation, puis consultez les résultats des tests et la couverture du code dans le portail.

Création d’un pipeline d’intégration continue avec Azure Pipelines est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu’est-ce que l’intégration continue ?

L’intégration continue (CI) consiste à fusionner fréquemment les modifications de code dans une branche partagée, chaque fusion déclenchant automatiquement une compilation et une série de tests. L’objectif est de détecter rapidement les échecs d’intégration, avant qu’ils ne s’aggravent et ne deviennent des problèmes importants et difficiles à corriger. Une bonne Pipeline CI compile le code, exécute les tests unitaires, mesure la couverture du code, effectue une analyse statique et produit un artefact déployable en quelques minutes. Azure Pipelines fournit le moteur d’automatisation nécessaire à cette pratique.

Structure d’une Pipeline YAML

Les Pipelines CI Azure Pipelines sont définies dans un fichier azure-pipelines.yml situé à la racine de votre référentiel. Le fichier YAML spécifie les déclencheurs (quand exécuter la Pipeline), un pool (le type d’Agent à utiliser) et une hiérarchie composée de stages, de jobs et d’étapes. Par défaut, les stages s’exécutent séquentiellement. Les jobs d’un même stage s’exécutent par défaut en parallèle. Les étapes d’un job s’exécutent séquentiellement. Cette structure vous donne un contrôle précis sur le flux d’exécution de la Pipeline.

# azure-pipelines.yml skeleton
trigger:
  branches:
    include:
    - main
    - 'feature/*'
  paths:
    exclude:
    - docs/**
    - '*.md'

pool:
  vmImage: ubuntu-latest

variables:
  buildConfiguration: Release
  nodeVersion: '18.x'

stages:
- stage: CI
  displayName: 'Build and Test'
  jobs:
  - job: Build
    displayName: 'Build Application'
    steps: []

Configuration des déclencheurs

Azure Pipelines prend en charge plusieurs types de déclencheurs. Les déclencheurs de branche exécutent la Pipeline lorsqu’un code est envoyé vers les branches spécifiées. Les déclencheurs de demandes d’extraction (déclencheurs PR) s’exécutent lorsqu’une PR est ouverte ou mise à jour vers les branches cibles, ce qui est essentiel pour valider le code avant sa fusion. Les déclencheurs planifiés s’exécutent à une heure fixe (par exemple, pour les compilations Nightly). Les déclencheurs de Pipeline enchaînent les Pipelines. Spécifiez trigger: none pour désactiver les exécutions automatiques et n’autoriser que l’exécution manuelle.

# Branch trigger
trigger:
  branches:
    include: [main, develop]

# Pull request trigger
pr:
  branches:
    include: [main]
  autoCancel: true  # Cancel previous runs when PR is updated

# Scheduled trigger (nightly build at 02:00 UTC)
schedules:
- cron: '0 2 * * *'
  displayName: 'Nightly Build'
  branches:
    include: [main]
  always: true  # Run even if no new commits

Étapes : scripts et tâches

Les étapes d’une Pipeline sont soit des scripts (commandes bash ou PowerShell), soit des tâches (unités préconfigurées et paramétrées provenant de la marketplace Azure DevOps). Des tâches comme NodeTool@0, DotNetCoreCLI@2 et Maven@3 encapsulent les opérations de compilation courantes. Utilisez displayName pour chaque étape afin d’obtenir des journaux de Pipeline lisibles. Chaque étape s’exécute dans l’ordre et la Pipeline échoue si une étape se termine avec un code différent de zéro, sauf si vous définissez continueOnError: true.

steps:
- task: NodeTool@0
  displayName: 'Install Node.js 18'
  inputs:
    versionSpec: '18.x'

- script: npm ci
  displayName: 'Install dependencies (clean install)'

- script: npm run lint
  displayName: 'Run ESLint'

- script: npm run build
  displayName: 'Build production bundle'

- script: npm test -- --ci --coverage
  displayName: 'Run unit tests with coverage'

Publication des résultats des tests

Après l’exécution des tests, publiez les résultats dans Azure DevOps à l’aide de la tâche PublishTestResults. Azure Pipelines analyse les fichiers de résultats aux formats JUnit, NUnit, XUnit ou VSTest et affiche dans l’interface d’exécution de la Pipeline le nombre de réussites et d’échecs, la durée de l’exécution des tests et les détails de chaque test. L’historique des tests est suivi au fil du temps afin de repérer les tests instables et les régressions. Cette visibilité est essentielle pour suivre la qualité du code dans toute l’équipe.

# Example: Node.js project with Jest tests
steps:
- script: npm test -- --ci --reporters=jest-junit
  displayName: 'Run tests with JUnit reporter'
  env:
    JEST_JUNIT_OUTPUT_DIR: '$(Agent.TempDirectory)/test-results'

- task: PublishTestResults@2
  displayName: 'Publish test results'
  inputs:
    testResultsFormat: JUnit
    testResultsFiles: '$(Agent.TempDirectory)/test-results/**/*.xml'
  condition: succeededOrFailed()  # Publish even if tests fail

Publication de la couverture du code

Publiez les rapports de couverture du code afin qu’Azure Pipelines affiche les pourcentages et les tendances de couverture dans l’interface de la Pipeline. La tâche PublishCodeCoverageResults accepte les rapports aux formats Cobertura ou JaCoCo. Associez cette tâche à des gates de couverture de branche : configurez un seuil minimal de couverture et faites échouer la compilation si la couverture passe en dessous de ce seuil. Les tendances de couverture aident à repérer les ajouts de code qui ne sont pas accompagnés de tests correspondants.

# Jest + coverage
- script: npm test -- --ci --coverage --coverageReporters=cobertura
  displayName: 'Run tests with coverage'

- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: '$(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml'
    reportDirectory: '$(System.DefaultWorkingDirectory)/coverage'

Variables et groupes de variables de Pipeline

Stockez la configuration de la Pipeline dans des variables définies au niveau de la Pipeline, du stage ou du job dans YAML. Pour les valeurs sensibles (clés d’API, mots de passe), utilisez des variables secrètes : définissez-les dans la bibliothèque de la Pipeline (interface utilisateur) ou dans des groupes de variables, puis référencez-les dans YAML. Les groupes de variables sont des collections réutilisables de variables partagées entre plusieurs Pipelines. Liez un groupe de variables à Azure Key Vault pour synchroniser automatiquement les secrets de Key Vault avec les variables de la Pipeline.

# Reference a variable group in a pipeline
variables:
- group: 'Production-Secrets'  # Linked to Azure Key Vault
- name: buildConfiguration
  value: Release

# Use a variable
steps:
- script: echo 'Building $(buildConfiguration) configuration'
- script: az webapp deploy --src-path drop.zip
  env:
    AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)  # From Key Vault
    APP_API_KEY: $(APP_API_KEY)  # Secret, not printed in logs

Artifacts : empaquetage de la sortie de compilation

Après une compilation réussie, empaquetez la sortie dans un artefact de Pipeline afin que les stages en aval (comme le déploiement) puissent y accéder. Utilisez PublishPipelineArtifact pour charger les fichiers de l’Agent de compilation vers le stockage d’Artifacts Azure DevOps. Dans un stage ou un job ultérieur, utilisez DownloadPipelineArtifact pour récupérer l’artefact. Cela découple le job de compilation des jobs de déploiement, qui peuvent s’exécuter sur des Agents différents ou dans des stages différents.

# Publish build artifact
- task: PublishPipelineArtifact@1
  displayName: 'Publish build artifact'
  inputs:
    targetPath: '$(System.DefaultWorkingDirectory)/dist'
    artifactName: webapp-drop
    publishLocation: pipeline

# In a later deployment job, download the artifact
- task: DownloadPipelineArtifact@2
  inputs:
    artifactName: webapp-drop
    targetPath: '$(Pipeline.Workspace)/drop'

- script: ls -la $(Pipeline.Workspace)/drop

Jobs parallèles pour accélérer les compilations

Exécutez les tâches indépendantes en parallèle en définissant plusieurs jobs dans un stage. Par exemple, exécutez simultanément les tests unitaires et l’analyse de sécurité plutôt que séquentiellement. Les jobs parallèles nécessitent des minutes de compilation distinctes, mais peuvent réduire considérablement la durée totale de la Pipeline. Utilisez la propriété dependsOn pour obliger un job à attendre la fin d’un ou plusieurs autres jobs avant de démarrer, afin de créer un graphe de dépendances au sein d’un stage.

stages:
- stage: CI
  jobs:
  - job: UnitTests
    displayName: 'Run unit tests'
    steps:
    - script: npm test

  - job: LintAndSecurity
    displayName: 'Lint and security scan'
    steps:
    - script: npm run lint
    - script: npm audit --audit-level=high

  - job: BuildArtifact
    displayName: 'Build and publish artifact'
    dependsOn: [UnitTests, LintAndSecurity]
    condition: succeeded('UnitTests') and succeeded('LintAndSecurity')
    steps:
    - script: npm run build

Validation de la compilation avec les stratégies de branche

Liez votre Pipeline CI à une stratégie de branche dans Azure Repos afin qu’elle s’exécute automatiquement comme vérification de validation de compilation sur les demandes d’extraction ciblant main. La fusion est bloquée tant que la Pipeline n’a pas réussi. Combinez plusieurs vérifications : la Pipeline CI doit réussir, au moins deux réviseurs doivent approuver, tous les commentaires doivent être résolus et un élément de travail lié doit exister. Vous créez ainsi une gate de qualité qui rend impossible la fusion de code défectueux dans la branche principale.

# Add build validation via CLI
az repos policy build create \
  --blocking true \
  --branch main \
  --branch-match-type exact \
  --build-definition-id <pipeline-id> \
  --display-name 'CI Build Validation' \
  --enabled true \
  --project MyProject \
  --repository-id <repo-id> \
  --queue-on-source-update-only true \
  --manual-queue-only false \
  --valid-duration 720  # Pipeline result expires after 12 hours

Lecture des résultats d’exécution d’une Pipeline

Une fois l’exécution d’une Pipeline terminée, examinez les résultats dans le portail Azure DevOps. L’onglet Summary affiche le résultat global (réussite ou échec) ainsi que la durée. L’onglet Tests répertorie tous les résultats de tests et permet de les filtrer selon leur résultat. L’onglet Code Coverage affiche le pourcentage de couverture et met en évidence les lignes non couvertes. Cliquez sur un job pour afficher le journal détaillé de chaque étape. Les Pipelines ayant échoué affichent l’étape défaillante en rouge, avec la sortie complète de l’erreur pour faciliter le diagnostic.

# View pipeline run results via CLI
az pipelines runs list \
  --pipeline-ids <pipeline-id> \
  --project MyProject \
  --query '[].{id:id, status:status, result:result, startTime:startTime}' \
  -o table

# View logs from a specific run
az pipelines runs logs list \
  --run-id <run-id> \
  --project MyProject

Vérification rapide

Vérifiez votre compréhension des concepts Microsoft Azure Fundamentals (AZ-900) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que Azure Pipelines YAML définit des Pipelines CI avec des stages, des jobs et des étapes pour la compilation, les tests et la création d’Artifacts, que les déclencheurs PR et les stratégies de branche appliquent des gates de qualité qui bloquent la fusion de code défectueux et que les tâches PublishTestResults et PublishCodeCoverageResults rendent la qualité des tests visible dans toute l’équipe. Nous allons ensuite découvrir le déploiement continu vers Azure.

Questions Fréquemment Posées

La leçon « Création d’un pipeline d’intégration continue avec Azure Pipelines » est-elle gratuite ?

Oui — le texte complet de « Création d’un pipeline d’intégration continue avec Azure Pipelines » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Création d’un pipeline d’intégration continue avec Azure Pipelines » ?

Définissez un pipeline YAML déclenché par les demandes de tirage, exécutez des tests unitaires et produisez un artefact de compilation, puis consultez les résultats des tests et la couverture du code… Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?

Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Création d’un pipeline d’intégration continue avec Azure Pipelines » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?

Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Présentation des services Azure DevOps
  2. Création d’un pipeline d’intégration continue avec Azure Pipelines
  3. Déploiement continu vers Azure
  4. GitHub Actions sur Azure
← Retour à Cloud & IT Cert Prep