Übung – Aktualisieren Sie den Trigger des Workflows

Abgeschlossen

Ein Kollege bittet Sie, die Always On-Funktion von App Service auf der Unternehmenswebsite zu aktivieren, damit die Website-App immer ausgeführt wird.

In dieser Übung aktualisieren Sie den Von Ihnen erstellten Workflow so, dass er automatisch ausgeführt wird, wenn sich eine Datei in Ihrer Hauptzweigung ändert. Sie verwenden den aktualisierten Workflow, um die angeforderte Konfigurationsänderung auf der Website bereitzustellen.

In dem Prozess gehen Sie wie folgt vor:

  • Aktualisieren Sie Ihren Workflow, sodass er automatisch ausgelöst wird, wenn sich eine Datei im Bereitstellungsordner in der Hauptzweigung ändert.
  • Nehmen Sie eine Änderung an Ihrer Bicep-Datei vor.
  • Stellen Sie sicher, dass der Workflow automatisch ausgeführt wird.

Aktualisieren Sie den Trigger auf zweigbasiert

  1. Öffnen Sie in Visual Studio Code die .github/workflows/workflow.yml-Datei .

  2. Fügen Sie am Anfang der Datei nach der Zeile name: deploy-toy-website den folgenden Code hinzu, um zu verhindern, dass mehrere gleichzeitige Workflow-Ausführungen stattfinden:

    name: deploy-toy-website
    concurrency: toy-company
    
  3. Entfernen Sie den manuellen Trigger, der sich in der Zeile on: [workflow_dispatch] befindet.

  4. Fügen Sie zwischen concurrency: und permissions: die folgende Triggerdefinition hinzu:

    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
        paths:
          - 'deploy/**'
    
    permissions:
    
  5. Speichern Sie die geänderte Datei.

  6. Committen Sie Ihre Änderungen, aber pushen Sie sie noch nicht. Sie werden die Änderungen bald pushen.

    git add .
    git commit -m 'Add branch trigger'
    

Aktualisieren Sie Ihre Bicep-Datei

  1. Öffnen Sie in Visual Studio Code die Datei main.bicep.

  2. Fügen Sie in der appServiceApp-Eigenschaft der siteConfig-Ressourcendefinition die alwaysOn-Eigenschaft mit dem Wert true hinzu:

    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: true
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    
  3. Speichern Sie die geänderte Datei.

  4. Committen Sie Ihre Änderungen, und pushen Sie beide Commits, indem Sie folgenden Code im Visual Studio Code-Terminal ausführen:

    git add .
    git commit -m 'Configure app Always On setting'
    git push
    

Überprüfen, ob der Workflow fehlschlägt

  1. Wählen Sie im Browser das Menü "Aktionen " von GitHub aus, und wählen Sie Ihren Workflow aus.

  2. Wählen Sie den letzten Workflowlauf aus, um festzustellen, dass der Workflow automatisch ausgeführt wurde. Der Workflow wurde ausgelöst, da Sie Ihre Änderungen in einen Branch gepusht haben, der vom Pushtrigger überwacht wird. Wenn der Workflow noch ausgeführt wird, warten Sie eine Minute, und aktualisieren Sie dann die Seite.

    Screenshot der GitHub-Schnittstelle mit der fehlgeschlagenen Workflowausführung.

    Der Workflow zeigt eine fehlgeschlagene Bereitstellung an.

  3. Um den Fehler zu diagnostizieren, wählen Sie den Auftrag deploy und dann den fehlerhaften Task arm-deploy aus.

    Beachten Sie, dass er den folgenden Text enthält:

    There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it.
    For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails
    

    Diese Fehlermeldung gibt an, dass bei der Bereitstellung ein Fehler aufgetreten ist, da die App Service-App mit dem Free-Tarif (F1) bereitgestellt wurde, der das Feature „Always On“ nicht unterstützt.

    Von Bedeutung

    Dieses Beispiel zeigt, wie wichtig es ist, Ihre Bicep-Dateien einschließlich aller verwendeten Parameterwerte zu testen. Kleine Fehler werden schnell in Ihre Ressourcenkonfiguration oder anderen Code eingefügt. Möglicherweise wird ein Problem erst erkannt, wenn Ihr Workflow den Code bereitstellt und der Vorgang fehlschlägt. In einem späteren Modul lernen Sie einige Strategien zum Überprüfen und Testen Ihres Bicep-Codes kennen.

Beheben Sie die Bicep-Datei, und sehen Sie, dass der Workflow erneut ausgelöst wurde.

Sie sprechen mit Ihrer Kollegin über die fehlgeschlagene Bereitstellung. Sie entscheiden gemeinsam, dass die Einstellung „Always On“ nur auf Ihre Produktionsumgebung angewandt werden muss. Hier beheben Sie das Problem, das Ihren Bereitstellungsfehler verursacht hat, indem Sie die neue, beschlossene Regel anwenden.

  1. Fügen Sie in Visual Studio Code der Variablen environmentConfigurationMap für jeden Umgebungstyp neue Eigenschaften hinzu:

    var environmentConfigurationMap = {
      nonprod: {
        appServiceApp: {
          alwaysOn: false
        }
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServiceApp: {
          alwaysOn: true
        }
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
  2. Ändern Sie die alwaysOn-Einstellung der Anwendung, um den entsprechenden Konfigurationszuordnungswert für den Umgebungstyp zu verwenden:

    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Speichern Sie die geänderte Datei.

  4. Committen und pushen Sie Ihre Änderungen im Visual Studio Code-Terminal:

    git add .
    git commit -m 'Enable App Service Always On for production environments only'
    git push
    

Überprüfen, ob der Workflow erfolgreich ist

  1. Kehren Sie in GitHub zur Workflowliste zurück. wählen Sie Ihren Workflow aus.

  2. Wählen Sie die letzte Ausführung aus. Wenn der Workflow noch ausgeführt wird, warten Sie eine Minute, und aktualisieren Sie dann die Seite.

    Die Workflowausführung wird angezeigt.

    Screenshot der GitHub-Schnittstelle mit der erfolgreichen Workflowausführung.

    Der Workflow zeigt eine erfolgreiche Bereitstellung an. Dieses Mal war sie erfolgreich, da Sie eine gültige Bicep-Datei verwendet haben.

Bereinigen der Ressourcen

Nachdem Sie die Übung abgeschlossen haben, können Sie die Ressourcen entfernen, damit Ihnen dafür keine Gebühren berechnet werden.

Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:

az group delete --resource-group ToyWebsite --yes --no-wait

Die Ressourcengruppe wird im Hintergrund gelöscht.

Remove-AzResourceGroup -Name ToyWebsite -Force