Übung: Hinzufügen eines Vorschauauftrags zu Ihrem Workflow
Sie möchten Ihrem Workflow einen zusätzlichen Auftrag hinzufügen, damit Sie überprüfen können, welche Änderungen an Ihrer Azure-Umgebung vorgenommen werden.
Während des Prozesses führen Sie die folgenden Aufgaben aus:
- Sie aktualisieren die YAML-Workflowdefinitionsdatei, um einen neuen Vorschauauftrag hinzuzufügen.
- Sie fügen Ihrem GitHub-Repository eine Umgebung hinzu.
- Sie konfigurieren die Umgebung so, dass eine Überprüfung erforderlich ist.
- Sie aktualisieren die YAML-Workflowdatei, um die Umgebung für den Bereitstellungsauftrag zu verwenden.
- Sie zeigen die Ergebnisse des Was-wäre-wenn-Vorgangs an und genehmigen eine Workflowausführung.
Aktualisieren der Workflowdefinition zum Hinzufügen eines Vorschauauftrags
Hier fügen Sie Ihrem Workflow einen neuen Auftrag hinzu, der den Was-wäre-wenn-Vorgang ausführt.
Öffnen Sie in Visual Studio Code die Datei workflow.yml im Ordner .github/workflows.
Fügen Sie zwischen den Aufträgen validate und deploy die folgende Definition für den Auftrag preview ein:
preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if
Beachten Sie, dass der Auftrag preview vom erfolgreichen Abschluss der Aufträge lint und validate abhängt.
Aktualisieren Sie den Auftrag deploy, damit er vom Auftrag preview abhängt:
deploy: runs-on: ubuntu-latest needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Speichern Sie die geänderte Datei.
Hinzufügen einer Umgebung
Navigieren Sie im Browser zu Einstellungen>Umgebungen.
Wählen Sie Neue Umgebung aus.
Geben Sie Website als Umgebungsnamen ein.
Wählen Sie Configure environment (Umgebung konfigurieren) aus.
In den Einrichtungsschritten für dieses Modul haben Sie bereits Verbundanmeldeinformationen für Ihren Workflow erstellt, die bei der Bereitstellung in der Umgebung verwendet werden.
Hinzufügen der Schutzregel „Erforderliche Reviewer“ zur Umgebung
Aktivieren Sie das Feld Erforderliche Reviewer.
Fügen Sie der Liste der Reviewer Ihren eigenen GitHub-Benutzernamen hinzu.
Wählen Sie Save protection rules (Schutzregeln speichern) aus.
Wählen Sie Umgebungen aus, um die Konfiguration zu beenden.
Aktualisieren der Workflowdefinition zum Erzwingen einer Umgebung und von Reviewern
In diesem Abschnitt konfigurieren Sie den Bereitstellungsauftrag (deploy), die für die Umgebung Website ausgeführt wird, die Sie zuvor erstellt haben.
Öffnen Sie die Datei workflow.yml in Visual Studio Code.
Fügen Sie dem Auftrag deploy den Parameter
environment
hinzu. Legen Sie den Wert aufWebsite
fest, damit er mit dem Namen der erstellten Umgebung übereinstimmt:deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Speichern Sie die Datei .
Überprüfen und Committen Ihrer Workflowdefinition
Überprüfen Sie, ob die Datei workflow.yml wie im folgenden Code aussieht:
name: deploy-toy-website-test concurrency: toy-company on: push: branches: - main permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate preview: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run what-if with: failOnStdErr: false resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: deploy/main.bicep parameters: > environmentType=${{ env.ENVIRONMENT_TYPE }} additionalArguments: --what-if deploy: runs-on: ubuntu-latest environment: Website needs: preview steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Wenn Ihre Datei anders aussieht, ändern Sie sie entsprechend diesem Beispiel, und speichern Sie sie 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 job" git push
Ausführen des Workflows und Überprüfen der Was-wäre-wenn-Ausgaben
Navigieren Sie in Ihrem Browser zu Ihren Workflowausführungen.
Wählen Sie die letzte Ausführung Ihres Workflows aus.
Warten Sie, bis der Workflow die Aufträge lint, validate und preview abgeschlossen hat. Obwohl GitHub die Seite automatisch mit dem aktuellen Status aktualisiert, sollten Sie die Seite gelegentlich aktualisieren.
Beachten Sie, dass sie vom Workflow zur Überprüfung aufgefordert werden. Abhängig davon, wie Sie Ihr GitHub-Konto eingerichtet haben, erhalten Sie eine E-Mail- oder Webbenachrichtigung mit einer Aufforderung, den Workflow zu überprüfen.
Bevor Sie die Fortsetzung des Workflows genehmigen, überprüfen Sie die Ergebnisse des Was-wäre-wenn-Vorgangs, um sicherzustellen, dass diese Ihren Erwartungen entsprechen.
Wählen Sie den Vorschauauftrag (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 Workflowprotokoll Was-wäre-wenn-Ergebnisse enthält, die folgendem Code ähneln:
Resource and property changes are indicated with these symbols: - Delete + Create ~ Modify = Nochange * Ignore The deployment will update the following scope: Scope: /subscriptions/***/resourceGroups/ToyWebsiteTest ~ Microsoft.OperationalInsights/workspaces/workspace-abcdefghijklm [2022-10-01] - properties.retentionInDays: 30 - properties.sku: name: "pergb2018" - properties.workspaceCapping: dailyQuotaGb: -1.0 ~ Microsoft.Web/sites/toy-website-abcdefghijklm [2022-03-01] + properties.siteConfig.localMySqlEnabled: false + properties.siteConfig.netFrameworkVersion: "v4.6" = Microsoft.Insights/components/toywebsite [2020-02-02] = Microsoft.Storage/storageAccounts/mystorageabcdefghijklm [2022-09-01] = Microsoft.Web/serverfarms/toy-website [2022-03-01] * microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite Resource changes: 2 to modify, 3 no change, 1 to ignore.
Der Was-wäre-wenn-Vorgang hat eine Änderung des Log Analytics-Arbeitsbereichs und der Websiteressourcen 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 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 wurde von Application Insights automatisch erstellt. Der Was-wäre-wenn-Befehl erkennt, dass an der Ressource keine Änderungen vorgenommen werden.
Genehmigen der Workflowausführung
Wählen Sie die Zusammenfassung aus, um zur Übersicht für die Workflowausführung zurückzukehren.
Wählen Sie im Genehmigungsbereich die Schaltfläche Review deployments (Bereitstellungen überprüfen) aus.
Wählen Sie im Popupelement Review pending deployments (Ausstehende Bereitstellungen überprüfen) die Umgebung Website aus. Geben Sie in das Feld Leave a comment (Kommentar) die Anmerkung Reviewed what-if results (Was-wäre-wenn-Ergebnisse überprüft) ein.
Wählen Sie Approve and deploy (Genehmigen und bereitstellen) aus.
Abschließen der erfolgreichen Bereitstellung
Beachten Sie, dass die Ausführung des Bereitstellungsauftrags (deploy) beginnt, nachdem Sie die Workflowausführung genehmigt haben.
Warten Sie auf den Abschluss des Auftrags.
Sie sehen, dass die Workflowausführung erfolgreich abgeschlossen wird.