Dela via


Snabbstart: Distribuera Bicep-filer 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. I den här snabbstarten använder du GitHub Actions for Azure Resource Manager-distributionen för att automatisera distributionen av en Bicep-fil till Azure.

Det 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 -projektet kan du läsa 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 Bicep-filen till den här resursgruppen.

az group create -n exampleRG -l westus

Generera autentiseringsuppgifter för distribution

Dina GitHub Actions 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. Ge tjänstens huvudnamn deltagarrollen för resursgruppen som skapades i föregående session så att GitHub-åtgärden med identiteten kan skapa resurser i den här resursgruppen. Vi rekommenderar att du beviljar minsta nödvändiga åtkomst.

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

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

Utdata är ett JSON-objekt med autentiseringsuppgifterna för rolltilldelning som ger åtkomst till din App Service-app som liknar följande utdata.

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

Kopiera det här JSON-objektet för senare. Du behöver bara avsnitten clientIdmed värdena , clientSecret, subscriptionIdoch tenantId . Kontrollera att du inte har ett extra kommatecken i slutet av den sista raden, tenantId till exempel raden i föregående exempel, annars resulterar det i en ogiltig JSON-fil. Du får ett fel under distributionen med texten "Inloggningen misslyckades med fel: Innehållet är inte ett giltigt JSON-objekt. Dubbelkolla om autentiseringstypen är korrekt."

Konfigurera GitHub-hemligheterna

Skapa hemligheter för dina Azure-autentiseringsuppgifter, resursgrupp och prenumerationer. Du använder dessa hemligheter i avsnittet Skapa arbetsflöde .

  1. I GitHub navigerar du till din lagringsplats.

  2. Välj Inställningar > Hemligheter och variabler > Åtgärder > Ny lagringsplatshemlighet.

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

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

  5. Skapa en annan hemlighet med namnet AZURE_SUBSCRIPTION. Lägg till ditt prenumerations-ID i hemlighetens värdefält (exempel: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e).

Lägga till en Bicep-fil

Lägg till en Bicep-fil till din GitHub-lagringsplats. 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@2023-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ödesexemplet 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 det utlöses. Det är en YAML-fil (.yml) i .github/workflows/ -sökvägen för lagringsplatsen. Filtillägget för arbetsflödet kan vara antingen .yml eller .yaml.

Utför följande steg för att skapa ett arbetsflöde:

  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: deployBicepFile.yml.

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

    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
    

    Ersätt mystore med ditt eget namnprefix för lagringskontot.

    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.
  6. Välj Genomför ändringar.

  7. Välj Checka in direkt till huvudgrenen.

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

När du uppdaterar antingen arbetsflödesfilen eller Bicep-filen utlöses arbetsflödet. Arbetsflödet startar direkt efter att du har genomfört ändringarna.

Kontrollera arbetsflödesstatus

  1. Välj fliken Åtgärder . Du ser arbetsflödet Skapa deployBicepFile.yml . Det tar 1–2 minuter att köra arbetsflödet.
  2. Välj arbetsflödet för att öppna det och kontrollera Status att är Success.

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