Übung: Veröffentlichen einer Vorlagenspezifikation
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.
Erweitern Sie in Visual Studio Code den Ordner .github/workflows im Stammverzeichnis des Repositorys.
Öffnen Sie die Datei template-spec-linux-app-service.yml.
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 Triggerworkflow_dispatch
manuell aufrufen, um ihn zu testen.Fügen Sie unten in der Datei, in dem ein Kommentar mit
# To be added
angezeigt 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.
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.
Speichern Sie die geänderte Datei.
Überprüfen und Committen Ihrer Workflowdefinition
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.
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
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.
Ein Browserfenster wird geöffnet. Möglicherweise müssen Sie sich erneut bei GitHub anmelden. Wählen Sie Autorisieren.
Auslösen des Workflows
Wählen Sie in Ihrem Browser die Registerkarte Aktionen aus.
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.
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.
GitHub beginnt dann mit einer neuen Workflowausführung. Möglicherweise müssen Sie Ihr Browserfenster aktualisieren, um die Ausführung anzuzeigen.
Wählen Sie in der Liste die neueste Ausführung aus.
Warten Sie, bis die Workflowausführung abgeschlossen ist. Wenn dies der Fall ist, wird die Vorlagenspezifikation in Azure veröffentlicht.
Beachten Sie die Ausführungsnummer des Workflows, die wahrscheinlich 2 lautet.
Anzeigen der Vorlagenspezifikation in Azure
Sie können die veröffentlichte Vorlagenspezifikation auch im Azure-Portal anzeigen.
Navigieren Sie in Ihrem Browser zum Azure-Portal.
Wechseln Sie zur Ressourcengruppe ToyReusable, und wählen Sie die Vorlagenspezifikation linux-app-service aus.
Untersuchen Sie die Details der Vorlagenspezifikation.
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.