0Pricing
Cloud & IT Cert Prep · Leçon

Déploiement continu vers Azure

Étendez le pipeline avec une étape de déploiement qui envoie l’artefact de compilation vers un emplacement App Service, exécute des tests de fumée et bascule vers la production après approbation.

Déploiement continu vers Azure est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 3 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 le déploiement continu ?

Le déploiement continu (CD) publie automatiquement en production chaque modification qui réussit les tests CI, sans intervention manuelle. La livraison continue est une version plus souple : elle automatise le déploiement jusqu’à un environnement de Staging et nécessite une gate d’approbation humaine avant la mise en production. Ces deux pratiques reposent sur la même infrastructure de Pipeline. Dans Azure Pipelines, le CD est mis en œuvre en ajoutant des stages de déploiement après le stage CI et en ciblant des Environments Azure avec des gates d’approbation si nécessaire.

Pipeline à plusieurs stages : CI + CD

Une Pipeline CI/CD complète comporte au moins trois stages : Build (compiler, tester, publier l’artefact), Deploy to Staging (déployer l’artefact dans un slot hors production) et Deploy to Production (permuter le slot ou déployer après approbation). Les stages transmettent l’artefact via le stockage d’Artifacts de la Pipeline. Le stage de Staging exécute automatiquement des tests d’intégration ou des tests de fumée ; le stage de Production attend une approbation manuelle avant de continuer.

# azure-pipelines.yml: multi-stage CI/CD
trigger:
  branches:
    include: [main]

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  jobs:
  - job: BuildApp
    steps:
    - script: npm ci && npm run build
    - task: PublishPipelineArtifact@1
      inputs: {targetPath: dist, artifactName: webapp}

- stage: DeployStaging
  dependsOn: Build
  jobs:
  - deployment: StagingDeploy
    environment: Staging
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp-staging, package: '$(Pipeline.Workspace)/webapp'}

- stage: DeployProduction
  dependsOn: DeployStaging
  jobs:
  - deployment: ProductionDeploy
    environment: Production   # Has manual approval gate
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp, package: '$(Pipeline.Workspace)/webapp'}

Jobs de déploiement et environnements

Utilisez des jobs deployment (et non des jobs job classiques) pour les stages de déploiement. Les jobs de déploiement prennent en charge les stratégies de déploiement (runOnce, rolling, canary), assurent le suivi de l’historique des déploiements par environnement et doivent référencer les Environments Azure DevOps. Un environnement enregistre les Pipelines qui y ont effectué un déploiement, la version actuellement active et l’état de santé des ressources, et fournit les gates d’approbation et les vérifications dans un tableau de bord unique.

# Deployment job with rolling strategy
- job: RollingDeploy
  strategy:
    rolling:
      maxParallel: 2     # Deploy to 2 targets at a time
      preDeploy:
        steps:
        - script: echo 'Pre-deploy checks'
      deploy:
        steps:
        - task: AzureWebApp@1
          inputs:
            appName: myapp
            package: '$(Pipeline.Workspace)/webapp'
      postRouteDeploy:
        steps:
        - script: curl -f https://myapp.azurewebsites.net/health

Déploiement vers Azure App Service

La tâche AzureWebApp@1 déploie une application web vers Azure App Service. Elle prend en charge le déploiement vers un slot spécifique (par exemple, Staging), ainsi que le déploiement de paquets ZIP, d’images Docker ou de fichiers JAR/WAR. Après un déploiement dans un slot de Staging, utilisez la tâche AzureAppServiceManage@0 pour permuter le slot de Staging avec Production : il s’agit de la stratégie de déploiement privilégiée sans interruption pour App Service.

# Deploy to staging slot, then swap to production
steps:
- task: AzureWebApp@1
  displayName: 'Deploy to staging slot'
  inputs:
    azureSubscription: 'AzureProductionSC'
    appType: webAppLinux
    appName: myUniqueWebApp
    deployToSlotOrASE: true
    resourceGroupName: MyRG
    slotName: staging
    package: '$(Pipeline.Workspace)/webapp/app.zip'
    runtimeStack: 'NODE|18-lts'

- task: AzureAppServiceManage@0
  displayName: 'Swap staging into production'
  inputs:
    azureSubscription: 'AzureProductionSC'
    action: Swap Slots
    webAppName: myUniqueWebApp
    resourceGroupName: MyRG
    sourceSlot: staging

Tests de fumée dans la Pipeline CD

Après le déploiement vers Staging, exécutez des tests de fumée : un ensemble minimal de tests qui vérifient que le déploiement a réussi et que l’application répond correctement. Les tests de fumée appellent généralement les principaux points de terminaison d’API et vérifient les codes d’état et le contenu de réponse attendus. S’ils échouent, la Pipeline s’arrête avant la permutation vers Production ou la demande d’approbation, empêchant ainsi une version défectueuse d’atteindre les utilisateurs.

# Smoke test step after staging deployment
- script: |
    MAX_RETRY=10
    COUNT=0
    until curl -sf https://myUniqueWebApp-staging.azurewebsites.net/health; do
      COUNT=$((COUNT+1))
      if [ $COUNT -ge $MAX_RETRY ]; then
        echo 'Health check failed after $MAX_RETRY attempts'
        exit 1
      fi
      echo 'Waiting for app to start... attempt '$COUNT
      sleep 10
    done
    echo 'App is healthy'
  displayName: 'Smoke test: health endpoint'

Gates d’approbation de l’environnement

Ajoutez des gates d’approbation aux Environments Azure DevOps pour exiger une approbation manuelle avant la poursuite des déploiements. Accédez aux paramètres de l’environnement et ajoutez des approbations — indiquez les utilisateurs ou les groupes qui doivent approuver. Lorsque la Pipeline atteint un job de déploiement ciblant cet environnement, elle se met en pause et envoie une notification par e-mail. Les approbateurs peuvent consulter les détails du déploiement et approuver ou rejeter celui-ci dans le portail Azure DevOps ou via le lien de l’e-mail de notification.

# Pipeline YAML: deployment to production environment
# (Approval configured in Azure DevOps portal on 'Production' environment)
- stage: DeployProduction
  displayName: 'Deploy to Production'
  dependsOn: DeployStaging
  condition: succeeded('DeployStaging')
  jobs:
  - deployment: ProdDeploy
    environment: Production   # <-- Triggers approval gate configured in portal
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              appName: myapp-prod
              package: '$(Pipeline.Workspace)/webapp/app.zip'

Déploiement vers Azure Kubernetes Service

Déployez des applications conteneurisées vers AKS à l’aide de la tâche KubernetesManifest@0. Cette tâche applique les manifestes YAML Kubernetes au cluster, avec une prise en charge intégrée de imagePullSecrets et des déploiements canary. Connectez-vous au cluster AKS à l’aide d’une connexion de service Kubernetes configurée dans Azure DevOps. La tâche utilise kubectl apply en arrière-plan et attend la fin du déploiement progressif avant de marquer l’étape comme réussie.

# AKS deployment step in Azure Pipelines
- task: KubernetesManifest@0
  displayName: 'Deploy to AKS'
  inputs:
    action: deploy
    kubernetesServiceConnection: 'AKS-Production-SC'
    namespace: production
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
    containers: 'mycontainerregistry.azurecr.io/myapp:$(Build.BuildId)'
    imagePullSecrets: acr-secret

Stratégie d’étiquetage des images

Étiquetez les images de conteneur avec l’ID de compilation ($(Build.BuildId)) ou le SHA du commit Git ($(Build.SourceVersion)) afin de toujours pouvoir relier un conteneur en cours d’exécution à la révision exacte du code qui l’a généré. Évitez d’utiliser l’étiquette latest en production : Kubernetes la met en cache et peut ne pas télécharger la nouvelle version. Stockez l’étiquette d’image spécifique comme variable de Pipeline et injectez-la dans les manifestes Kubernetes au moment du déploiement à l’aide de envsubst ou sed.

# Tag and push image with build ID in CI stage
- script: |
    IMAGE='mycontainerregistry.azurecr.io/myapp'
    TAG='$(Build.BuildId)'
    docker build -t $IMAGE:$TAG -t $IMAGE:latest .
    az acr login --name mycontainerregistry
    docker push $IMAGE:$TAG
    docker push $IMAGE:latest
    echo "##vso[task.setvariable variable=imageTag;isOutput=true]$TAG"
  name: BuildImage
  displayName: 'Build and push container image'

Stratégies de restauration

Définissez une stratégie de restauration pour les déploiements en production afin de pouvoir récupérer rapidement après une mauvaise mise en production. Pour App Service, restaurer signifie rééchanger l’emplacement de production avec la version précédente de préproduction. Pour AKS, utilisez kubectl rollout undo. Créez un pipeline de restauration dédié ou ajoutez une tâche de restauration manuelle qui peut être déclenchée depuis le portail Azure DevOps. Documentez la procédure de restauration et entraînez-vous régulièrement : une restauration non testée n’est pas une restauration.

# Rollback job triggered manually
- job: Rollback
  condition: and(failed(), eq(variables['Build.Reason'], 'Manual'))
  steps:
  # App Service rollback: swap production back to previous
  - task: AzureAppServiceManage@0
    inputs:
      azureSubscription: 'AzureProductionSC'
      action: Swap Slots
      webAppName: myUniqueWebApp
      resourceGroupName: MyRG
      sourceSlot: production  # Swap production back to staging version
      targetSlot: staging

Notifications et surveillance des déploiements

Après chaque déploiement en production, exécutez automatiquement une vérification de surveillance pour confirmer que la nouvelle version fonctionne correctement. Utilisez la vérification de pipeline AzureMonitor@1 pour interroger les métriques d’Azure Monitor ; si le taux d’erreurs augmente après le déploiement, bloquez la progression du pipeline et déclenchez une restauration. Envoyez des notifications de déploiement à Microsoft Teams ou à Slack via des tâches webhook afin que l’équipe sache quand un déploiement est terminé et quelle version est active.

# Send Teams notification on deployment completion
- task: InvokeRestAPI@1
  displayName: 'Notify Teams channel'
  inputs:
    connectionType: connectedServiceName
    serviceConnection: 'TeamsWebhookSC'
    method: POST
    body: '{
      "text": "Deployed **$(Build.BuildId)** to Production. Committed by $(Build.RequestedFor). <br>View: https://myapp.contoso.com"
    }'
    waitForCompletion: false

Bonnes pratiques de CD

Suivez ces bonnes pratiques de déploiement continu : déployez fréquemment (de petits lots réduisent les risques), utilisez des indicateurs de fonctionnalité pour dissocier le déploiement de la mise en production, automatisez tous les contrôles de qualité avant la production, mettez en place une préproduction similaire à la production afin que les différences ne masquent pas les bogues, surveillez les fenêtres de déploiement avec des vérifications automatisées de l’état de santé et disposez toujours d’un plan de restauration testé. Un pipeline de CD mature transforme le déploiement en événement anodin plutôt qu’en opération très stressante.

Vérification rapide

Testez votre compréhension des concepts de 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 les pipelines YAML à plusieurs étapes enchaînent les étapes Build, Staging et Production en transmettant des artefacts, que les tâches de déploiement avec Environments permettent de mettre en place des contrôles d’approbation et un suivi des déploiements, et que les tests de fumée exécutés après le déploiement en préproduction empêchent les mises en production défectueuses. Nous allons maintenant étudier GitHub Actions sur Azure.

Questions Fréquemment Posées

La leçon « Déploiement continu vers Azure » est-elle gratuite ?

Oui — le texte complet de « Déploiement continu vers Azure » 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 « Déploiement continu vers Azure » ?

Étendez le pipeline avec une étape de déploiement qui envoie l’artefact de compilation vers un emplacement App Service, exécute des tests de fumée et bascule vers la production après approbation. 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 3 sur 4.

Combien de temps prend la leçon « Déploiement continu vers Azure » ?

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