Snabbstart: Distribuera Bicep-filer med hjälp GitHub Åtgärder

GitHub Actions är en uppsättning funktioner i GitHub för att automatisera arbetsflöden för programutveckling.

I den här snabbstarten använder du GitHub för distribution Azure Resource Manager att automatisera distributionen av en Bicep-fil till Azure.

Den ger en kort introduktion till GitHub åtgärder och Bicep-filer. Om du vill ha mer detaljerade steg för att konfigurera GitHub åtgärder och projekt kan du läsa Learning: Distribuera Azure-resurser med hjälp av Bicep och GitHub Actions.

Förutsättningar

Skapa resursgrupp

Skapa en resursgrupp. Senare i den här snabbstarten distribuerar du din Bicep-fil till den här resursgruppen.

az group create -n exampleRG -l westus

Generera autentiseringsuppgifter för distribution

Åtgärden GitHub körs under en identitet. Använd kommandot az ad sp create-for-rbac för att skapa ett huvudnamn för tjänsten för identiteten.

Ersätt platshållaren myApp med namnet på ditt program. Ersätt {subscription-id} med ditt prenumerations-ID.

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

Viktigt

Omfånget i föregående exempel är begränsat till resursgruppen. Vi rekommenderar att du beviljar minsta nödvändiga åtkomst.

Utdata är ett JSON-objekt med autentiseringsuppgifter för rolltilldelning som ger åtkomst till din App Service som liknar nedan. Kopiera det här JSON-objektet till senare. Du behöver bara avsnitten med värdena clientId clientSecret , , och subscriptionId tenantId .

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

Konfigurera GitHub hemligheter

Skapa hemligheter för dina autentiseringsuppgifter, resursgrupp och prenumerationer i Azure.

  1. I GitHubdu till din lagringsplats.

  2. Välj Inställningar > Secrets > New secret (Ny hemlighet).

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

  4. Skapa en till hemlighet med namnet AZURE_RG . Lägg till namnet på resursgruppen i hemlighetens värdefält ( exampleRG ).

  5. Skapa en till hemlighet med namnet AZURE_SUBSCRIPTION . Lägg till ditt prenumerations-ID i hemlighetens värdefält (exempel: 90fd3f9d-4c61-432d-99ba-1273f236afa2 ).

Lägga till en Bicep-fil

Lägg till en Bicep-fil GitHub lagringsplatsen. Följande Bicep-fil skapar ett lagringskonto:

@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

Bicep-filen kräver en parameter med namnet storagePrefix med 3 till 11 tecken.

Du kan placera filen var som helst på lagringsplatsen. Arbetsflödesexempel i nästa avsnitt förutsätter att Bicep-filen heter main.bicep och lagras i roten på lagringsplatsen.

Skapa arbetsflöde

Ett arbetsflöde definierar de steg som ska köras när de utlöses. Det är en YAML-fil (.yml) på sökvägen .github/workflows/för din lagringsplats. Filnamnstillägget för arbetsflödet kan vara antingen .yml eller .yaml.

Skapa ett arbetsflöde genom att göra följande:

  1. Från din GitHub 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. Exempel: deployBicepFile.yml.

  5. Ersätt innehållet i yml-filen med följande kod:

    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 Bicep file
        - name: deploy
          uses: azure/arm-deploy@v1
          with:
            subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
            resourceGroupName: ${{ secrets.AZURE_RG }}
            template: ./main.bicep
            parameters: storagePrefix=mystore
            failOnStdErr: false
    

    Ersätt mystore med ditt eget lagringskontonamnprefix.

    Anteckning

    Du kan i stället ange en JSON-formatparameterfil i arm-distributionen (exempel: .azuredeploy.parameters.json ).

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

    • name: Namnet på arbetsflödet.
    • : Namnet på GitHub händelser som utlöser arbetsflödet. Arbetsflödet utlöses när det finns en push-händelse på main-grenen.
  6. Välj Start commit (Starta incheckning).

  7. Välj Genomför direkt till huvudgrenen.

  8. Välj Spara ny fil (eller Genomför ändringar).

Om du uppdaterar arbetsflödesfilen eller Bicep-filen utlöses arbetsflödet. Arbetsflödet startar direkt efter att du har gjort ändringarna.

Kontrollera arbetsflödesstatus

  1. Välj fliken Åtgärder. Arbetsflödet Create deployStorageAccount.yml visas i listan. 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.

az group delete --name exampleRG

Nästa steg