Étendre un pipeline pour utiliser plusieurs modèles

Dans ce module, découvrez pourquoi il est important d’étendre un pipeline à plusieurs modèles et comment le faire avec Azure DevOps. Ce labo couvre les concepts fondamentaux et les bonnes pratiques pour créer un pipeline multiphase, un modèle de variables, un modèle de travail et un modèle de phase.

Ces exercices prennent environ 20 minutes.

Avant de commencer

Vous aurez besoin d’un abonnement Azure, d’une organisation Azure DevOps et de l’application eShopOnWeb pour suivre les labos.

Instructions

Exercice 1 : Créer un pipeline YAML multiphase

Dans cet exercice, vous allez créer un pipeline YAML à plusieurs étapes dans Azure DevOps.

Tâche 1 : Créer un pipeline YAML principal multiphase

  1. Accédez au Portail Azure DevOps sur https://aex.dev.azure.com et ouvrez votre organisation.

  2. Ouvrez le projet eShopOnWeb.

  3. Accédez à Pipelines > Pipelines.

  4. Cliquez sur le bouton Nouveau pipeline.

  5. Sélectionnez Azure Repos Git (YAML).

  6. Sélectionnez le référentiel eShopOnWeb .

  7. Sélectionnez Pipeline de démarrage.

  8. Remplacez le contenu du fichier azure-pipelines.yml par le code suivant :

    trigger:
    - main
    
    pool:
      vmImage: 'windows-latest'
    
    stages:
    - stage: Dev
      jobs:
      - job: Build
        steps:
        - script: echo Build
    - stage: Test
      jobs:
      - job: Test
        steps:
        - script: echo Test
    - stage: Production
      jobs:
      - job: Deploy
        steps:
        - script: echo Deploy
    
  9. Sélectionnez Enregistrer et exécuter. Choisissez de commiter directement dans la branche principale, puis sélectionnez à nouveau Enregistrer et exécuter.

  10. Vous verrez le pipeline s’exécutant avec les trois phases (Dev, Test et Production) et les travaux correspondants. Attendez que le pipeline se termine et revenez à la page Pipelines.

    Capture d’écran du pipeline en cours d’exécution avec les trois phases et les travaux correspondants

  11. Sélectionnez (Autres options) sur le côté droit du pipeline que vous venez de créer, puis sélectionnez Renommer/déplacer.

  12. Renommez le pipeline eShopOnWeb-MultiStage-Main, puis sélectionnez Enregistrer.

Tâche 2 : Créer un modèle de variables

  1. Accédez à Repos > Fichiers.

  2. Développez le dossier .ado et cliquez sur Nouveau fichier.

  3. Nommez le fichier eshoponweb-variables.yml, puis cliquez sur Créer.

  4. Ajoutez le code suivant au fichier :

    variables:
      resource-group: 'YOUR-RESOURCE-GROUP-NAME'
      location: 'centralus'
      templateFile: 'infra/webapp.bicep'
      subscriptionid: 'YOUR-SUBSCRIPTION-ID'
      azureserviceconnection: 'YOUR-AZURE-SERVICE-CONNECTION-NAME'
      webappname: 'YOUR-WEB-APP-NAME'
    
  5. Remplacez les valeurs des variables par les valeurs de votre environnement :

    • Remplacez YOUR-RESOURCE-GROUP-NAME par le nom du groupe de ressources que vous souhaitez utiliser dans ce labo, par exemple, rg-eshoponweb-secure.
    • Définissez la valeur de la variable d’emplacement sur le nom de la région Azure dans laquelle vous souhaitez déployer vos ressources, par exemple, centralus.
    • Remplacez YOUR-SUBSCRIPTION-ID par votre ID d’abonnement Azure.
    • Remplacez YOUR-AZURE-SERVICE-CONNECTION-NAME par azure subs.
    • Remplacez YOUR-WEB-APP-NAME par un nom unique au monde de l’application web à déployer, par exemple, la chaîne eshoponweb-lab-multi-123456 suivie d’un nombre aléatoire à six chiffres.
  6. Sélectionnez Commiter, dans la zone de texte de commentaire de commit, entrez [skip ci], puis sélectionnez Commiter.

    Remarque : en ajoutant le commentaire [skip ci] au commit, vous empêchez l’exécution automatique du pipeline qui, à ce stade, s’exécute par défaut après chaque modification du référentiel.

Tâche 3 : Préparer le pipeline pour utiliser des modèles

  1. Dans le portail Azure DevOps, dans la page du projet eShopOnWeb, accédez à Référentiels.

  2. Dans le répertoire racine du dépôt, sélectionnez azure-pipelines.yml, qui contient la définition du pipeline eShopOnWeb-MultiStage-Main.

  3. Cliquez sur le bouton Modifier.

  4. Remplacez le contenu du fichier azure-pipelines.yml par le code suivant :

    trigger:
    - main
    variables:
    - template: .ado/eshoponweb-variables.yml
       
    stages:
    - stage: Dev
      jobs:
      - template: .ado/eshoponweb-ci.yml
    - stage: Test
      jobs:
      - template: .ado/eshoponweb-cd-webapp-code.yml
    - stage: Production
      jobs:
      - job: Deploy
        steps:
        - script: echo Deploy to Production or Swap
    
  5. Sélectionnez Commiter, dans la zone de texte de commentaire de commit, entrez [skip ci], puis sélectionnez Commiter.

Tâche 4 : Mise à jour des modèles CI/CD

  1. Dans les référentiels du projet eShopOnWeb, sélectionnez le répertoire .ado et sélectionnez le fichier ** eshoponweb-ci.yml**.

  2. Cliquez sur le bouton Modifier.

  3. Supprimez tout ce qui précède la section Travaux.

    #NAME THE PIPELINE SAME AS FILE (WITHOUT ".yml")
    # trigger:
    # - main
       
    resources:
      repositories:
        - repository: self
          trigger: none
       
    stages:
    - stage: Build
      displayName: Build .Net Core Solution
    
  4. Sélectionnez Commiter, dans la zone de texte de commentaire de commit, entrez [skip ci], puis sélectionnez Commiter.

  5. Dans les référentiels du projet eShopOnWeb, sélectionnez le répertoire .ado et sélectionnez le fichier eshoponweb-cd-webapp-code.yml.

  6. Cliquez sur le bouton Modifier.

  7. Supprimez tout ce qui précède la section Travaux.

     # NAME THE PIPELINE SAME AS FILE (WITHOUT ".yml") #
     # Trigger CD when CI executed successfully
        
     resources:
       pipelines:
         - pipeline: eshoponweb-ci
           source: eshoponweb-ci # given pipeline name
           trigger: true
        
     repositories:
       - repository: eShopSecurity
         type: git
         name: eShopSecurity/eShopSecurity # name of the project and repository
        
     variables:
       - template: eshoponweb-secure-variables.yml@eShopSecurity # name of the template and repository
        
     stages:
       - stage: Test
         displayName: Testing WebApp
         jobs:
           - deployment: Test
             pool: eShopOnWebSelfPool
             environment: Test
             strategy:
               runOnce:
                 deploy:
                   steps:
                     - script: echo Hello world! Testing environments!
        
       - stage: Deploy
         displayName: Deploy to WebApp
    
  8. Remplacez le contenu existant de l’étape #download artifacts par :

        - download: current
          artifact: Website
        - download: current
          artifact: Bicep
    
  9. Sélectionnez Commiter, dans la zone de texte de commentaire de commit, entrez [skip ci], puis sélectionnez Commiter.

Tâche 5 : Exécuter le pipeline principal

  1. Accédez à Pipelines > Pipelines.

  2. Ouvrez le pipeline eShopOnWeb-MultiStage-Main.

  3. Sélectionnez Exécuter le pipeline.

    Remarque : si vous recevez un message indiquant que le pipeline a besoin d’une autorisation pour accéder à une ressource avant que cette exécution puisse se poursuivre, sélectionnez Afficher, puis Autoriser et Autoriser à nouveau pour autoriser l’exécution du pipeline.

    Remarque : si des travaux de la phase de déploiement échouent, accédez à la page d’exécution du pipeline et sélectionnez Réexécuter les travaux ayant échoué*.

  4. Attendez que le pipeline se termine et vérifiez les résultats.

    Capture d’écran du pipeline en cours d’exécution avec les trois phases et les travaux correspondants

[!IMPORTANT] N’oubliez pas de supprimer les ressources créées dans le portail Azure pour éviter les frais inutiles.

Révision

Dans ce labo, vous avez appris à étendre un pipeline dans plusieurs modèles à l’aide d’Azure DevOps. Ce labo a couvert les concepts fondamentaux et les meilleures pratiques pour créer un pipeline multiphase, un modèle de variables, un modèle de travail et un modèle de phase.