Schnellstart: Bereitstellen von Bicep-Dateien mithilfe von GitHub Actions

GitHub Actions ist eine Suite mit Features in GitHub, mit denen Sie Ihre Workflows für die Softwareentwicklung automatisieren können. In dieser Schnellstartanleitung verwenden Sie die GitHub Actions zum Bereitstellen von Azure Resource Manager, um die Bereitstellung einer Bicep-Datei in Azure zu automatisieren.

Es bietet eine kurze Einführung in GitHub und Bicep-Dateien. Wenn Sie detailliertere Schritte zum Einrichten der GitHub-Aktionen und -Projekte wünschen, lesen Sie Bereitstellen von Azure-Ressourcen mithilfe von Bicep und GitHub Actions.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
  • Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.
  • Ein GitHub-Repository, in dem Sie Ihre Bicep-Dateien und Ihre Workflowdateien speichern können. Informationen zum Erstellen eines neuen Repositorys finden Sie in diesem Hilfeartikel.

Ressourcengruppe erstellen

Erstellen Sie eine Ressourcengruppe. Später in dieser Schnellstartanleitung stellen Sie Ihre Bicep-Datei für diese Ressourcengruppe zur Bereitstellung.

az group create -n exampleRG -l westus

Generieren von Anmeldeinformationen für die Bereitstellung

Ihre GitHub Actions werden unter einer Identität ausgeführt. Verwenden Sie den Befehl az ad sp create-for-rbac, um einen Dienstprinzipal zu erstellen. Gewähren Sie dem Dienstprinzipal die Rolle Mitwirkender für die Ressourcengruppe, die in der vorherigen Sitzung erstellt wurde, damit die GitHub-Aktion mit der Identität Ressourcen in dieser Ressourcengruppe erstellen kann. Es wird empfohlen, mindestens erforderlichen Zugriff zu gewähren.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Ersetzen Sie den Platzhalter {app-name} durch den Namen Ihrer Anwendung. Ersetzen Sie {subscription-id} durch Ihre Abonnement-ID.

Die Ausgabe ist ein JSON-Objekt mit den Anmeldeinformationen für die Rollenzuweisung, die ähnlich wie unten Zugriff auf Ihre App Service-App gewähren.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    ...
  }

Kopieren Sie dieses JSON-Objekt zur späteren Verwendung. Sie benötigen nur die Abschnitte mit den Werten clientId, clientSecret, subscriptionId und tenantId. Stellen Sie sicher, dass sie am Ende der letzten Zeile kein zusätzliches Komma haben, z. B. die tenantId-Zeile im vorherigen Beispiel, sonst führt sie zu einer ungültigen JSON-Datei. Während der Bereitstellung wird dann eine Fehlermeldung angezeigt: „Fehler bei der Anmeldung mit Fehler: Inhalt ist kein gültiges JSON-Objekt. Überprüfen Sie, ob der 'Authentifizierungstyp' korrekt ist.“

Konfigurieren der GitHub-Geheimnisse

Erstellen Sie Geheimnisse für Ihre Azure-Anmeldeinformationen, Ressourcengruppe und Abonnements. Sie verwenden diese geheimen Schlüssel im Abschnitt Workflow erstellen.

  1. Navigieren Sie zu Ihrem Repository in GitHub.

  2. Wählen Sie Einstellungen > Geheimnisse und Variablen > Aktionen > Neues Repositorygeheimnis aus.

  3. Fügen Sie die gesamte JSON-Ausgabe aus dem Azure CLI-Befehl in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_CREDENTIALS.

  4. Erstellen Sie ein weiteres Geheimnis mit dem Namen AZURE_RG. Fügen Sie den Namen Ihrer Ressourcengruppe dem Wertfeld des Geheimnisses hinzu (exampleRG).

  5. Erstellen Sie ein weiteres Geheimnis mit dem Namen AZURE_SUBSCRIPTION. Fügen Sie Ihre Abonnement-ID dem Wertfeld des Geheimnisses hinzu (Beispiel: 90fd3f9d-4c61-432d-99ba-1273f236afa2).

Hinzufügen einer Bicep-Datei

Fügen Sie Ihrem GitHub-Repository eine Bicep-Datei hinzu. Die folgende Bicep-Datei erstellt ein Speicherkonto:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Die Bicep-Datei erfordert einen Parameter namens storagePrefix mit 3 bis 11 Zeichen.

Sie können die Datei an einer beliebigen Stelle im Repository ablegen. Im Workflowbeispiel im nächsten Abschnitt wird davon ausgegangen, dass die Bicep-Datei main.bicep heißt und im Repositorystamm gespeichert ist.

Erstellen des Workflows

Ein Workflow definiert die Schritte, die ausgeführt werden müssen, wenn sie ausgelöst werden. Es ist eine YAML-Datei (.yml) im GITHUB/Workflows/-Pfad Ihres Repositorys. Die Erweiterung der Workflowdatei kann entweder .yml oder .yaml lauten.

Gehen Sie wie folgt vor, um einen Workflow zu erstellen:

  1. Klicken Sie in Ihrem GitHub-Repository im oberen Menü auf Actions (Aktionen).

  2. Klicken Sie auf New workflow (Neuer Workflow).

  3. Klicken Sie auf set up a workflow yourself (Workflow selbst einrichten).

  4. Benennen Sie die Workflowdatei um, wenn Sie einen anderen Namen als main.yml bevorzugen. Beispiel: deployBicepFile.yml.

  5. Ersetzen Sie den Inhalt der YML-Datei durch folgenden Code:

    name: Deploy Bicep file
    on: [push]
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
        - name: Checkout code
          uses: actions/checkout@main
    
        - name: Log into Azure
          uses: azure/login@v1
          with:
            creds: ${{ secrets.AZURE_CREDENTIALS }}
    
        - name: Deploy Bicep file
          uses: azure/arm-deploy@v1
          with:
            subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
            resourceGroupName: ${{ secrets.AZURE_RG }}
            template: ./main.bicep
            parameters: 'storagePrefix=mystore storageSKU=Standard_LRS'
            failOnStdErr: false
    

    Ersetzen Sie mystore durch das Namenspräfix Ihres eigenen Speicherkontos.

    Hinweis

    Sie können in der ARM-Bereitstellungsaktion stattdessen eine Parameterdatei im JSON-Format angeben (Beispiel: .azuredeploy.parameters.json).

    Der erste Abschnitt der Workflowdatei enthält Folgendes:

    • name: Der Name des Workflows.
    • on: Der Name der GitHub-Ereignisse, die den Workflow auslösen. Der Workflow wird ausgelöst, wenn ein Pushereignis auf der Hauptverzweigung vor liegt.
  6. Wählen Sie Commit changes (Änderungen committen) aus.

  7. Wählen Sie Direkten Commit zum Hauptbranch ausführen aus.

  8. Klicken Sie auf Commit new file (Neue Datei committen) (oder Commit changes [Änderungen committen]).

Wenn Sie entweder die Workflowdatei oder die Bicep-Datei aktualisieren, wird der Workflow ausgelöst. Der Workflow wird direkt nach dem Committen der Änderungen gestartet.

Überprüfen des Workflowstatus

  1. Klicken Sie auf die Registerkarte Actions (Aktionen). Es wird ein Workflow zum Erstellen deployBicepFile.yml aufgelistet. Die Ausführung des Workflows dauert 1–2 Minuten.
  2. Wählen Sie den Workflow aus, um ihn zu öffnen, und überprüfen Sie, ob StatusSuccess ist.

Bereinigen von Ressourcen

Wenn Ihre Ressourcengruppe und das Repository nicht mehr benötigt werden, bereinigen Sie die bereitgestellten Ressourcen, indem Sie die Ressourcengruppe und Ihr GitHub-Repository löschen.

az group delete --name exampleRG

Nächste Schritte