Übung: Veröffentlichen einer Vorlagenspezifikation

Abgeschlossen

Ihr Team hat einige sicherheitsgehärtete Bicep-Dateien erstellt, die mit dem neuen Governancemodell Ihres Unternehmens konform sind. Eine der gehärteten Bicep-Dateien stellt eine Linux-basierte Azure App Service-App bereit. In dieser Übung verwenden Sie einen Bereitstellungsworkflow, um die Bicep-Datei als Vorlagenspezifikation zu veröffentlichen.

In dem Prozess gehen Sie wie folgt vor:

  • Fügen Sie dem Workflow einen Lintauftrag hinzu.
  • Fügen Sie einen Workflowauftrag hinzu, um die Vorlagenspezifikation zu veröffentlichen.
  • Führen Sie den Workflow manuell aus, und überprüfen Sie, ob der Workflow erfolgreich abgeschlossen wurde.
  • Überprüfen Sie die veröffentlichte Vorlagenspezifikation in Azure.

Hinzufügen eines Lint-Auftrags zu Ihrem Workflow

Ihr Repository enthält den Entwurf eines Workflows, den Sie als Startpunkt verwenden können.

  1. Erweitern Sie in Visual Studio Code den Ordner .github/workflows im Stammverzeichnis des Repositorys.

  2. Öffnen Sie die Datei template-spec-linux-app-service.yml.

    Screenshot: Visual Studio Code mit Anzeige des Speicherorts der Workflowdefinitionsdatei

    Die Workflowdefinition enthält zwei Trigger. In dieser Übung ändern Sie die Bicep-Datei für die Vorlagenspezifikation nicht, weshalb der Trigger push nie ausgelöst wird. Sie können Ihren Workflow mit dem Trigger workflow_dispatch manuell aufrufen, um ihn zu testen.

  3. Fügen Sie unten in der Datei, in dem ein Kommentar mit # To be addedangezeigt wird, die folgende Lintauftragsdefinition hinzu:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    

    In Ihrem Repository ist die Datei bicepconfig.json enthalten, die den Linter so konfiguriert, dass anstelle von Warnungen Fehler ausgegeben werden. Wenn während des Lintauftrags Fehler auftreten, schlägt der Workflow fehl.

    Tipp

    YAML-Dateien berücksichtigen Einzüge. Unabhängig davon, ob Sie diesen Code eingeben oder einfügen, stellen Sie sicher, dass der Einzug korrekt ist. Später in dieser Übung sehen Sie die vollständige YAML-Workflowdefinition, sodass Sie überprüfen können, ob Ihre Datei übereinstimmt.

Hinzufügen eines Veröffentlichungsauftrags zu Ihrem Workflow

Jetzt können Sie einen zweiten Auftrag hinzufügen, um die Vorlagenspezifikation in Azure zu veröffentlichen.

  1. Fügen Sie den folgenden Code am Ende der Datei template-spec-linux-app-service.yml hinzu:

    publish:
      runs-on: ubuntu-latest
      needs: [ lint ]
      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/cli@v1
        name: Publish template spec
        with:
          inlineScript: |
            az ts create \
              --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
              --name ${{ env.TEMPLATE_SPEC_NAME }} \
              --version ${{ github.run_number }} \
              --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
              --location ${{ env.AZURE_REGION }} \
              --yes
    

    Dieser Auftrag checkt den Code aus Ihrem Repository aus und meldet sich mit den von Ihnen erstellten GitHub-Geheimnissen bei Azure an. Anschließend wird der Befehl az ts create ausgeführt, um die Vorlagenspezifikation in Azure zu veröffentlichen.

    Tipp

    Zur Einfachheit verwendet Ihr Workflow die Ausführungsnummer des Workflows als Versionsnummer der Vorlagenspezifikation. In der nächsten Einheit lernen Sie ein komplexeres Versionsverwaltungsschema kennen.

  2. Speichern Sie die geänderte Datei.

Überprüfen und Committen Ihrer Workflowdefinition

  1. Stellen Sie sicher, dass die Datei template-spec-linux-app-service.yml wie im folgenden Beispiel aussieht:

    name: template-spec-linux-app-service
    concurrency: template-spec-linux-app-service
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'template-specs/linux-app-service/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      AZURE_RESOURCEGROUP_NAME: ToyReusable
      AZURE_REGION: westus3
      TEMPLATE_SPEC_NAME: linux-app-service
      TEMPLATE_SPEC_FILE_PATH: template-specs/linux-app-service/main.bicep
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.TEMPLATE_SPEC_FILE_PATH }}
    
      publish:
        runs-on: ubuntu-latest
        needs: [ lint ]
        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/cli@v1
          name: Publish template spec
          with:
            inlineScript: |
              az ts create \
                --resource-group ${{ env.AZURE_RESOURCEGROUP_NAME }} \
                --name ${{ env.TEMPLATE_SPEC_NAME }} \
                --version ${{ github.run_number }} \
                --template-file ${{ env.TEMPLATE_SPEC_FILE_PATH }} \
                --location ${{ env.AZURE_REGION }} \
                --yes
    

    Falls nicht, aktualisieren Sie sie entsprechend diesem Beispiel und speichern sie.

  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 lint and publish jobs to Linux App Service template spec workflow"
    git push
    
  3. Dies ist das erste Mal, dass Sie dieses Repository verwendet haben, sodass Sie u. U. aufgefordert werden, sich anzumelden.

    Geben Sie unter Windows 1 ein, um sich über einen Webbrowser zu authentifizieren, und wählen Sie dann die EINGABETASTE aus.

    Wählen Sie unter macOS Authorize (Autorisieren) aus.

  4. Ein Browserfenster wird geöffnet. Möglicherweise müssen Sie sich erneut bei GitHub anmelden. Wählen Sie Autorisieren.

Auslösen des Workflows

  1. Wählen Sie in Ihrem Browser die Registerkarte Aktionen aus.

    Screenshot: Registerkarte für Aktionen in GitHub

    Fehlgeschlagene Workflowausführungen sind bereits ausgeführt, aber Sie müssen sich keine Gedanken darüber machen. Die Ausführungen sind fehlgeschlagen, weil die Workflowdefinitionen beim Erstellen des Repositorys noch nicht abgeschlossen waren.

  2. Wählen Sie den Workflow template-spec-linux-app-service und die Schaltfläche Workflow ausführen aus, und wählen Sie dann Workflow ausführen aus.

    Screenshot: Auswahl zum Ausführen des Workflows der Vorlagenspezifikationen in GitHub

    GitHub beginnt dann mit einer neuen Workflowausführung. Möglicherweise müssen Sie Ihr Browserfenster aktualisieren, um die Ausführung anzuzeigen.

  3. Wählen Sie in der Liste die neueste Ausführung aus.

    Screenshot: GitHub mit hervorgehobener letzten Ausführung des Workflows der Vorlagenspezifikationen

    Warten Sie, bis die Workflowausführung abgeschlossen ist. Wenn dies der Fall ist, wird die Vorlagenspezifikation in Azure veröffentlicht.

  4. Beachten Sie die Ausführungsnummer des Workflows, die wahrscheinlich 2 lautet.

    Screenshot: Erfolgreiche Workflowausführung in GitHub mit hervorgehobener Ausführungsnummer

Anzeigen der Vorlagenspezifikation in Azure

Sie können die veröffentlichte Vorlagenspezifikation auch im Azure-Portal anzeigen.

  1. Navigieren Sie in Ihrem Browser zum Azure-Portal.

  2. Wechseln Sie zur Ressourcengruppe ToyReusable, und wählen Sie die Vorlagenspezifikation linux-app-service aus.

    Screenshot des Azure-Portals: Ressourcengruppe mit hervorgehobenen Vorlagenspezifikationen

  3. Untersuchen Sie die Details der Vorlagenspezifikation.

    Screenshot des Azure-Portals: Ressourcengruppe mit Details zu den Vorlagenspezifikationen

    Beachten Sie, dass die Aktuelle Version und die Versionsnummer der Ausführungsnummer des Workflows entsprechen. In Ihrem Workflow wird die Ausführungsnummer als Versionsnummer der Vorlagenspezifikation verwendet.