Übung: Hinzufügen einer Vorschauphase zu Ihrer Pipeline
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.
Öffnen Sie in Visual Studio Code die Datei azure-pipelines.yml im Ordner deploy.
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)Speichern Sie Ihre Änderungen an der Datei.
Hinzufügen einer Umgebung
Wechseln Sie in Azure DevOps zu Pipelines-Umgebungen>.
Klicken Sie auf Umgebung erstellen.
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.
Klicken Sie auf Erstellen.
Hinzufügen einer Genehmigungsprüfung zur Umgebung
Wählen Sie die Registerkarte "Genehmigungen" und "Prüfungen " in der oberen linken Ecke der Seite aus.
Klicken Sie auf Genehmigungen.
Geben Sie im Feld Genehmiger Ihren eigenen Namen ein, und wählen Sie sich selbst aus.
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.
Klicken Sie auf Erstellen.
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.
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.Speichern Sie die Datei.
Überprüfen und Committen Ihrer Pipelinedefinition
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.
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
Wechseln Sie in Azure DevOps zu Ihrer Pipeline.
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.
Wenn Sie aufgefordert werden, die Berechtigung für den Zugriff auf eine Ressource zu erteilen, wählen Sie "Ansicht" und dann " Zulassen" aus.
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.
Bevor Sie die Fortsetzung der Pipeline genehmigen, überprüfen Sie die Was-wäre-wenn-Ergebnisse, um sicherzustellen, dass diese Ihren Erwartungen entsprechen.
Wählen Sie die Phase Preview aus.
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.
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 - toywebsiteangezeigt. 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
Wählen Sie den Pfeil nach links aus, um zu den Details der Pipelineausführung zurückzukehren.
Klicken Sie im Genehmigungsbereich auf Überprüfen.
Geben Sie in das Feld Kommentar die Anmerkung Reviewed what-if results (Was-wäre-wenn-Ergebnisse überprüft) ein.
Wählen Sie Genehmigen aus.
Abschließen der erfolgreichen Bereitstellung
Beachten Sie, dass die Bereitstellungsphase gestartet wird, nachdem Sie die Pipelineausführung genehmigt haben.
Warten Sie, bis die Phase abgeschlossen ist.
Sie sehen, dass die Pipelineausführung erfolgreich abgeschlossen wird.