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
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
- Skapa ett Microsoft Entra-program med tjänstens huvudnamn genom att Azure Portal, Azure CLI eller Azure PowerShell.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela tjänstens huvudnamn en lämplig roll genom att Azure Portal, Azure CLI eller Azure PowerShell.
- Konfigurera en federerad identitetsautentiseringsuppgift i ett Microsoft Entra-program för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
Alternativ 2: Användartilldelad hanterad identitet
- Skapa en användartilldelad hanterad identitet.
- Kopiera värdena för klient-ID, prenumerations-ID och katalog-ID (klientorganisation) som ska användas senare i ditt GitHub Actions-arbetsflöde.
- Tilldela en lämplig roll till din användartilldelade hanterade identitet.
- Konfigurera en federerad identitetsautentiseringsuppgift för en användartilldelad hanterad identitet för att lita på token som utfärdats av GitHub Actions till din GitHub-lagringsplats.
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.
Gå till din lagringsplats i GitHub.
Välj Säkerhetshemligheter > och variabler > Åtgärder.
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.
Skapa hemligheter för
AZURE_CLIENT_ID
,AZURE_TENANT_ID
ochAZURE_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:
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:
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
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