Übung: Hinzufügen einer Vorschauphase zu Ihrer Pipeline
Sie möchten Ihrer Pipeline eine zusätzliche 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
Hier fügen Sie Ihrer Pipeline 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:
- 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)
Speichern Sie die geänderte Datei.
Hinzufügen einer Umgebung
Navigieren Sie im Browser zu Pipelines>Umgebungen.
Klicken Sie auf Umgebung erstellen.
Geben Sie Website als Umgebungsnamen ein.
Lassen Sie die Beschreibung leer. Wählen Sie für Ressource die Option 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 werden diese Features nicht verwendet, und Sie können sie ignorieren.
Wählen Sie Erstellen aus.
Hinzufügen einer Genehmigungsprüfung zur Umgebung
Wählen Sie oben links auf dem Bildschirm die Registerkarte Genehmigungen und Überprüfungen aus.
Wählen Sie Genehmigungen aus.
Geben Sie in das Textfeld Genehmigende Personen Ihren eigenen Namen ein, und wählen Sie sich selbst aus.
Wählen Sie neben Erweitert den Pfeil aus.
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.
Wählen Sie Erstellen aus.
Aktualisieren der Pipelinedefinition zum Erzwingen einer Umgebung und Genehmigung
In diesem Abschnitt konfigurieren Sie die Bereitstellungsphase (Deploy), die für die Umgebung Website ausgeführt wird, die Sie zuvor erstellt haben. 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:
- 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)
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 durchführen, kann der Bereitstellungsauftrag Ihre Bicep-Datei nicht lesen. Sie können stattdessen auch Pipelineartefakte verwenden, um Dateien zwischen Pipelinephasen zu senden. In der Zusammenfassung haben wir weitere Informationen zu Artefakten verlinkt.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: vmImage: ubuntu-latest 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)
Falls nicht, aktualisieren Sie sie entsprechend diesem Beispiel, und speichern Sie sie.
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 Ihrem Browser 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 aktuellen Status aktualisiert, sollten Sie die Seite gelegentlich auch manuell aktualisieren.
Wenn Sie aufgefordert werden, die Berechtigung zum 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 der folgende Code aussehen:
Resource and property changes are indicated with these symbols: + Create ~ Modify = Nochange The deployment will update the following scope: Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/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, Störfaktoren mit der Zeit zu minimieren. 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
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 Ausführung der Deploy-Phase beginnt, nachdem Sie die Pipelineausführung genehmigt haben.
Warten Sie, bis die Phase abgeschlossen ist.
Sie sehen, dass die Pipelineausführung erfolgreich abgeschlossen wird.