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
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 Resource Manager-mallar och dina arbetsflödesfiler. Information om hur du skapar en finns i Skapa en ny lagringsplats.
Ö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 Portal 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
Gå till din lagringsplats i GitHub.
Gå till Inställningar i navigeringsmenyn.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
Välj Ny lagringsplatshemlighet.
Klistra in hela JSON-utdata från Azure CLI-kommandot i hemlighetens värdefält. Ge hemligheten namnet
AZURE_CREDENTIALS
.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.
- 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: deployStorageAccount.yml.
- 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.
- Välj Start commit (Starta incheckning).
- Välj Checka in direkt till huvudgrenen.
- 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
- Välj fliken Åtgärder . Du ser arbetsflödet Skapa deployStorageAccount.yml . Det tar 1–2 minuter att köra arbetsflödet.
- Välj arbetsflödet för att öppna det.
- 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.