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
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- Ett GitHub-konto. Om du inte har ett sådant kan du registrera dig utan kostnad.
- En GitHub-lagringsplats för att lagra dina Bicep-filer och dina arbetsflödesfiler. Information om hur du skapar en finns i Skapa en ny lagringsplats.
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 clientId
med värdena , clientSecret
, subscriptionId
och 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 .
I GitHub navigerar du till din lagringsplats.
Välj Inställningar > Hemligheter och variabler > Åtgärder > Ny lagringsplatshemlighet.
Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten
AZURE_CREDENTIALS
namnet .Skapa en annan hemlighet med namnet
AZURE_RG
. Lägg till namnet på resursgruppen i hemlighetens värdefält (exampleRG
).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:
På din GitHub-lagringsplats väljer du Åtgärder på den översta menyn.
Välj Nytt arbetsflöde.
Välj konfigurera ett arbetsflöde själv.
Byt namn på arbetsflödesfilen om du föredrar ett annat namn än main.yml. Till exempel: deployBicepFile.yml.
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.
Välj Genomför ändringar.
Välj Checka in direkt till huvudgrenen.
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
- Välj fliken Åtgärder . Du ser arbetsflödet Skapa deployBicepFile.yml . Det tar 1–2 minuter att köra arbetsflödet.
- Välj arbetsflödet för att öppna det och kontrollera
Status
att ärSuccess
.
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