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

Om du vill använda Azure Login-åtgärden med OIDC måste du konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program eller en användartilldelad hanterad identitet.

Alternativ 1: Microsoft Entra-program

Alternativ 2: Användartilldelad hanterad identitet

Konfigurera GitHub-hemligheterna

Du måste ange programmets klient-ID, katalog-ID (klient)-ID och prenumerations-ID för inloggningsåtgärden. Dessa värden kan antingen anges direkt i arbetsflödet eller lagras i GitHub-hemligheter och refereras till i arbetsflödet. Att spara värdena som GitHub-hemligheter är det säkrare alternativet.

  1. Gå till din lagringsplats i GitHub.

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

    Skärmbild av att lägga till en hemlighet

  3. Välj Ny lagringsplatshemlighet.

    Kommentar

    Om du vill förbättra arbetsflödets säkerhet på offentliga lagringsplatser använder du miljöhemligheter i stället för lagringsplatshemligheter. Om miljön kräver godkännande kan ett jobb inte komma åt miljöhemligheter förrän en av de nödvändiga granskarna godkänner det.

  4. Skapa hemligheter för AZURE_CLIENT_ID, AZURE_TENANT_IDoch AZURE_SUBSCRIPTION_ID. Kopiera dessa värden från ditt Microsoft Entra-program eller användartilldelade hanterade identiteter för dina GitHub-hemligheter:

    GitHub-hemlighet Microsoft Entra-program eller användartilldelad hanterad identitet
    AZURE_CLIENT_ID Client ID
    AZURE_SUBSCRIPTION_ID Prenumerations-ID:t
    AZURE_TENANT_ID Katalog-ID (klientorganisation)

    Kommentar

    Av säkerhetsskäl rekommenderar vi att du använder GitHub Secrets i stället för att skicka värden direkt till arbetsflödet.

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:

    on: [push]
    name: Azure ARM
    permissions:
      id-token: write
      contents: read
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
    
          # Checkout code
        - uses: actions/checkout@main
    
          # Log into Azure
        - uses: azure/login@v2
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
          # 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 storageSKU=Standard_LRS'
            failOnStdErr: false
    
  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