Distribuera ARM-mallar med hjälp av GitHub Actions

GitHub Actions är en uppsättning funktioner i GitHub för att automatisera dina arbetsflöden för programvaruutveckling på samma plats som du lagrar kod och samarbetar med pull-begäranden och problem.

Använd åtgärden Distribuera Azure Resource Manager-mall för att automatisera distributionen av en Azure Resource Manager-mall (ARM-mall) till Azure.

Förutsättningar

Översikt över arbetsflödesfil

Ett arbetsflöde definieras av en YAML-fil (.yml) i /.github/workflows/ sökvägen på lagringsplatsen. Den här definitionen innehåller de olika steg och parametrar som utgör arbetsflödet.

Filen har två avsnitt:

Avsnitt Uppgifter
Autentisering 1. Generera autentiseringsuppgifter för distribution.
Distribuera 1. Distribuera Resource Manager-mallen.

Generera autentiseringsuppgifter för distribution

Skapa ett huvudnamn för tjänsten med kommandot az ad sp create-for-rbac i Azure CLI. Kör det här kommandot med Azure Cloud Shell i Azure-portalen eller genom att välja knappen Prova .

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Parametern --json-auth är tillgänglig i Azure CLI-versioner >= 2.51.0. Versioner före den här användningen --sdk-auth med en utfasningsvarning.

I exemplet ovan ersätter du platshållarna med ditt prenumerations-ID, resursgruppsnamn och appnamn. Utdata är ett JSON-objekt med autentiseringsuppgifterna för rolltilldelning som ger åtkomst till din App Service-app på liknande sätt som nedan. Kopiera det här JSON-objektet för senare.

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

Konfigurera GitHub-hemligheterna

  1. Gå till din lagringsplats i GitHub.

  2. Gå till Inställningar i navigeringsmenyn.

  3. Välj Säkerhetshemligheter > och variabler > Åtgärder.

    Screenshot of adding a secret

  4. Välj Ny lagringsplatshemlighet.

  5. Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten namnet AZURE_CREDENTIALS.

  6. Välj Add secret (Lägg till hemlighet).

Lägg till Resource Manager-mall

Lägg till en Resource Manager-mall till din GitHub-lagringsplats. Den här mallen skapar ett lagringskonto.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Du kan placera filen var som helst på lagringsplatsen. Arbetsflödesexemplet i nästa avsnitt förutsätter att mallfilen heter azuredeploy.json och lagras i roten på lagringsplatsen.

Skapa arbetsflöde

Arbetsflödesfilen måste lagras i mappen .github/workflows i roten på lagringsplatsen. Filtillägget för arbetsflödet kan vara antingen .yml eller .yaml.

  1. På din GitHub-lagringsplats väljer du Åtgärder på den översta menyn.
  2. Välj Nytt arbetsflöde.
  3. Välj konfigurera ett arbetsflöde själv.
  4. Byt namn på arbetsflödesfilen om du föredrar ett annat namn än main.yml. Till exempel: deployStorageAccount.yml.
  5. Ersätt innehållet i YML-filen med följande:
  on: [push]
  name: Azure ARM
  jobs:
    build-and-deploy:
      runs-on: ubuntu-latest
      steps:

        # Checkout code
      - uses: actions/checkout@main

        # Log into Azure
      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

        # Deploy ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

Kommentar

Du kan ange en JSON-formatparametrarfil i stället i åtgärden ARM Deploy (exempel: .azuredeploy.parameters.json).

Det första avsnittet i arbetsflödesfilen innehåller:

  • name: Namnet på arbetsflödet.
  • on: Namnet på de GitHub-händelser som utlöser arbetsflödet. Arbetsflödet utlöses när det finns en push-händelse på huvudgrenen, som ändrar minst en av de två angivna filerna. De två filerna är arbetsflödesfilen och mallfilen.
  1. Välj Start commit (Starta incheckning).
  2. Välj Checka in direkt till huvudgrenen.
  3. Välj Checka in ny fil (eller Genomför ändringar).

Eftersom arbetsflödet har konfigurerats för att utlösas av antingen arbetsflödesfilen eller mallfilen som uppdateras, startar arbetsflödet direkt efter att du har checkat in ändringarna.

Kontrollera arbetsflödesstatus

  1. Välj fliken Åtgärder . Du ser arbetsflödet Skapa deployStorageAccount.yml . Det tar 1–2 minuter att köra arbetsflödet.
  2. Välj arbetsflödet för att öppna det.
  3. Välj Kör ARM-distribution på menyn för att verifiera distributionen.

Rensa resurser

När resursgruppen och lagringsplatsen inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen och GitHub-lagringsplatsen.

Nästa steg