Übung: Hinzufügen einer Vorschauphase zu Ihrer Pipeline

Abgeschlossen

Sie möchten Ihrer Pipeline eine weitere Phase hinzufügen, damit Sie überprüfen können, welche Änderungen an Ihrer Azure-Umgebung vorgenommen werden.

In dem Prozess gehen Sie wie folgt vor:

  • Aktualisieren Sie die YAML-Pipelinedatei, um eine neue Vorschauphase hinzuzufügen.
  • Fügen Sie Azure Pipelines eine Umgebung hinzu.
  • Konfigurieren Sie die Umgebung so, dass eine Umgebung erforderlich ist.
  • Aktualisieren Sie die YAML-Pipelinedatei, um die Umgebung für die Bereitstellungsphase zu verwenden.
  • Zeigen Sie die Was-wäre-wenn-Ergebnisse an, und genehmigen Sie eine Pipelineausführung.

Aktualisieren der Pipelinedefinition zum Hinzufügen einer Vorschauphase

Fügen Sie Ihrer Pipeline zuerst eine neue Phase hinzu, in der der Was-wäre-wenn-Vorgang ausgeführt wird.

  1. Öffnen Sie in Visual Studio Code die Datei azure-pipelines.yml im Ordner deploy.

  2. Fügen Sie zwischen den Phasen Validate und Deploy die folgende Definition der Preview-Phase ein:

    jobs:
    - job: PreviewAzureChanges
      displayName: Preview Azure changes
      steps:
        - task: AzureCLI@2
          name: RunWhatIf
          displayName: Run what-if
          inputs:
            azureSubscription: $(ServiceConnectionName)
            scriptType: 'bash'
            scriptLocation: 'inlineScript'
            inlineScript: |
              az deployment group what-if \
                --resource-group $(ResourceGroupName) \
                --template-file deploy/main.bicep \
                --parameters environmentType=$(EnvironmentType)
    
  3. Speichern Sie Ihre Änderungen an der Datei.

Hinzufügen einer Umgebung

  1. Wechseln Sie in Azure DevOps zu Pipelines-Umgebungen>.

    Screenshot der Azure DevOps-Schnittstelle, die das Element

  2. Klicken Sie auf Umgebung erstellen.

    Screenshot der Azure DevOps-Schnittstelle, die die Schaltfläche zum Erstellen einer Umgebung zeigt.

  3. Geben Sie Website als Umgebungsnamen ein.

    Lassen Sie die Beschreibung leer. Wählen Sie im Abschnitt "Ressource" "Keine" aus.

    Hinweis

    In Azure Pipelines werden Bereitstellungsfeatures mithilfe von Umgebungen aktiviert. Einige dieser Features gelten nur für Bereitstellungen in Kubernetes oder auf VMs. In diesem Modul verwenden Sie diese Features nicht, und Sie können sie ignorieren.

  4. Klicken Sie auf Erstellen.

    Screenshot der Seite

Hinzufügen einer Genehmigungsprüfung zur Umgebung

  1. Wählen Sie die Registerkarte "Genehmigungen" und "Prüfungen " in der oberen linken Ecke der Seite aus.

    Screenshot der Azure DevOps-Schnittstelle, die die Websiteumgebung zeigt. Die Registerkarte

  2. Klicken Sie auf Genehmigungen.

    Screenshot der Azure DevOps-Schnittstelle, die die Seite zum Hinzufügen einer Prüfung zeigt. Das Element

  3. Geben Sie im Feld Genehmiger Ihren eigenen Namen ein, und wählen Sie sich selbst aus.

  4. Erweitern Sie den Abschnitt "Erweitert", indem Sie den Pfeil nach unten auswählen.

    Beachten Sie, dass genehmigende Personen standardmäßig berechtigt sind, die von ihnen ausgelösten Ausführungen zu genehmigen. Da Sie die einzige Person sind, die mit dieser Pipeline arbeiten wird, lassen Sie dieses Kontrollkästchen aktiviert.

  5. Klicken Sie auf Erstellen.

    Screenshot der Azure DevOps-Schnittstelle, die die Seite zum Hinzufügen einer Genehmigungsprüfung zeigt. Die Details werden eingegeben, und die Schaltfläche

Aktualisieren der Pipelinedefinition zum Erzwingen einer Umgebung und Genehmigung

Als Nächstes konfigurieren Sie die Bereitstellungsphase, damit sie in der Website-Umgebung, die Sie zuvor erstellt haben, ausgeführt wird. Dazu konvertieren Sie die Deploy-Phase, um einen Bereitstellungsauftrag anstelle eines Standardauftrags auszuführen, und konfigurieren diesen, sodass er die Umgebung bereitstellt.

  1. Ersetzen Sie in Visual Studio Code in der Datei azure-pipelines.yml die Definition der Phase Deploy durch folgenden Code:

     jobs:
     - deployment: DeployWebsite
       displayName: Deploy website
       environment: Website
       strategy:
         runOnce:
           deploy:
             steps:
               - checkout: self
    
               - task: AzureResourceManagerTemplateDeployment@3
                 name: DeployBicepFile
                 displayName: Deploy Bicep file
                 inputs:
                   connectedServiceName: $(ServiceConnectionName)
                   deploymentName: $(Build.BuildNumber)
                   location: $(deploymentDefaultLocation)
                   resourceGroupName: $(ResourceGroupName)
                   csmFile: deploy/main.bicep
                   overrideParameters: >
                     -environmentType $(EnvironmentType)
    

    Beachten Sie, dass Sie einen neuen checkout-Schritt definiert haben. Im Gegensatz zu normalen Aufträgen müssen Bereitstellungsaufträge so konfiguriert werden, dass sie die Dateien aus Ihrem Git-Repository auschecken (herunterladen). Wenn Sie diesen Schritt nicht einschließen kann der Bereitstellungsauftrag Ihre Bicep-Datei nicht lesen. Sie können stattdessen auch Pipelineartefakte verwenden, um Dateien zwischen Pipelinephasen zu senden. Die Modulzusammenfassung enthält einen Link zu weiteren Informationen zu Artefakten.

  2. Speichern Sie die Datei.

Überprüfen und Committen Ihrer Pipelinedefinition

  1. Vergewissern Sie sich, dass die Datei azure-pipelines.yml wie folgt aussieht:

    trigger:
      batch: true
      branches:
        include:
        - main
    
    pool: Default
    
    variables:
      - name: deploymentDefaultLocation
        value: westus3
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file deploy/main.bicep
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Validate
      jobs:
      - job: ValidateBicepCode
        displayName: Validate Bicep code
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: RunPreflightValidation
            displayName: Run preflight validation
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              location: $(deploymentDefaultLocation)
              deploymentMode: Validation
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    
    - stage: Preview
      jobs:
      - job: PreviewAzureChanges
        displayName: Preview Azure changes
        steps:
          - task: AzureCLI@2
            name: RunWhatIf
            displayName: Run what-if
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az deployment group what-if \
                  --resource-group $(ResourceGroupName) \
                  --template-file deploy/main.bicep \
                  --parameters environmentType=$(EnvironmentType)
    
    - stage: Deploy
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        environment: Website
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: $(ServiceConnectionName)
                    deploymentName: $(Build.BuildNumber)
                    location: $(deploymentDefaultLocation)
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
    

    Wenn es nicht gleich aussieht, aktualisieren Sie es so, dass es mit diesem Beispiel übereinstimmt, und speichern Sie es dann.

  2. Committen und pushen Sie Ihre Änderungen in Ihr Git-Repository, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:

    git add .
    git commit -m "Add preview stage"
    git push
    

Ausführen der Pipeline und Überprüfen der Was-wäre-wenn-Ausgaben

  1. Wechseln Sie in Azure DevOps zu Ihrer Pipeline.

  2. Wählen Sie die letzte Ausführung Ihrer Pipeline aus.

    Warten Sie, bis die Pipeline die Phasen Lint, Überprüfen und Vorschau abgeschlossen hat. Obwohl Azure Pipelines die Seite automatisch mit dem neuesten Status aktualisiert, ist es ratsam, die Seite gelegentlich zu aktualisieren.

  3. Wenn Sie aufgefordert werden, die Berechtigung für den Zugriff auf eine Ressource zu erteilen, wählen Sie "Ansicht" und dann " Zulassen" aus.

  4. Beachten Sie, dass Azure Pipelines Sie zur Genehmigung auffordert. Sie erhalten außerdem eine E-Mail mit dem Hinweis, dass die Pipeline Ihre Genehmigung benötigt.

    Screenshot der Azure DevOps-Schnittstelle, die die Pipelineausführung zeigt. Die Genehmigungsanforderung ist hervorgehoben.

    Bevor Sie die Fortsetzung der Pipeline genehmigen, überprüfen Sie die Was-wäre-wenn-Ergebnisse, um sicherzustellen, dass diese Ihren Erwartungen entsprechen.

  5. Wählen Sie die Phase Preview aus.

  6. Wählen Sie den Schritt Run what-if (Was-wäre-wenn ausführen) aus, um die Änderungen zu überprüfen, über die der Was-wäre-wenn-Befehl berichtet.

  7. Beachten Sie, dass das Pipelineprotokoll Was-wäre-wenn-Ergebnisse enthält, die in etwa wie die folgende Ausgabe aussehen:

    Resource and property changes are indicated with these symbols:
      + Create
      ~ Modify
      = Nochange
    
    The deployment will update the following scope:
    
    Scope: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ToyWebsiteTest
    
      ~ Microsoft.Web/sites/toy-website-nbfnedv766snk [2021-01-15]
        + properties.siteConfig.localMySqlEnabled:   false
        + properties.siteConfig.netFrameworkVersion: "v4.6"
    
      = Microsoft.Insights/components/toywebsite [2020-02-02]
      = Microsoft.Storage/storageAccounts/mystoragenbfnedv766snk [2021-04-01]
      = Microsoft.Web/serverfarms/toy-website [2021-01-15]
    
    Resource changes: 1 to modify, 3 no change.
    

    Der Was-wäre-wenn-Vorgang hat eine Änderung an der Websiteressource erkannt. Die erkannten Änderungen sind jedoch störend. und nicht um eine echte Änderung an Ihrer Ressource. Das Azure-Team arbeitet daran, Rauschen zu reduzieren. Bis dahin können Sie die für diese beiden Eigenschaften erkannten Änderungen ignorieren.

    Unter Umständen wird Ihnen in der Was-wäre-wenn-Ausgabe auch ein Element zum Ressourcentyp microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite angezeigt. Diese Ressource wird von Application Insights automatisch erstellt. Der Was-wäre-wenn-Befehl erkennt, dass an der Ressource keine Änderungen vorgenommen werden.

Genehmigen der Pipelineausführung

  1. Wählen Sie den Pfeil nach links aus, um zu den Details der Pipelineausführung zurückzukehren.

    Screenshot der Azure DevOps-Schnittstelle, die das Pipelineprotokollmenü zeigt. Der Pfeil

  2. Klicken Sie im Genehmigungsbereich auf Überprüfen.

  3. Geben Sie in das Feld Kommentar die Anmerkung Reviewed what-if results (Was-wäre-wenn-Ergebnisse überprüft) ein.

  4. Wählen Sie Genehmigen aus.

    Screenshot der Azure DevOps-Schnittstelle, die die Pipelinegenehmigungsseite zeigt. Die Schaltfläche

Abschließen der erfolgreichen Bereitstellung

  1. Beachten Sie, dass die Bereitstellungsphase gestartet wird, nachdem Sie die Pipelineausführung genehmigt haben.

    Warten Sie, bis die Phase abgeschlossen ist.

  2. Sie sehen, dass die Pipelineausführung erfolgreich abgeschlossen wird.