Guida introduttiva: Distribuire file Bicep con GitHub Actions
GitHub Actions è una suite di funzionalità di GitHub per l'automazione dei flussi di lavoro dello sviluppo di software. In questa guida introduttiva si userà la distribuzione di GitHub Actions per Azure Resource Manager per automatizzare la distribuzione di un file Bicep in Azure.
Offre una breve introduzione alle azioni GitHub e ai file Bicep. Per istruzioni più dettagliate sulla configurazione delle azioni e del progetto GitHub, vedere Distribuire le risorse di Azure usando Bicep e GitHub Actions.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un account GitHub. Se non è disponibile, iscriversi per riceverne uno gratuito.
- Un repository GitHub per archiviare i file Bicep e i file del flusso di lavoro. Per crearne uno, vedere Creazione di un nuovo repository.
Crea gruppo di risorse
Crea un gruppo di risorse. Più avanti in questo argomento di avvio rapido si distribuisce il file Bicep in questo gruppo di risorse.
az group create -n exampleRG -l westus
Generare le credenziali per la distribuzione
GitHub Actions viene eseguito con un'identità. Usare il comando az ad sp create-for-rbac per creare un'entità servizio. Concedere all'entità servizio il ruolo collaboratore per il gruppo di risorse creato nella sessione precedente in modo che l'azione GitHub con l'identità possa creare risorse in questo gruppo di risorse. È consigliabile concedere l'accesso minimo necessario.
az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth
Sostituire il segnaposto {app-name}
con il nome dell'applicazione. Sostituire {subscription-id}
con l'ID della sottoscrizione.
L'output è un oggetto JSON con le credenziali di assegnazione di ruolo che forniscono l'accesso all'app del servizio app simile all’output seguente.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
Copiare l'oggetto JSON per un uso successivo. Saranno necessarie solo le sezioni con i valori clientId
, clientSecret
, subscriptionId
e tenantId
. Assicurarsi che non sia presente una virgola aggiuntiva alla fine dell'ultima riga, come la riga tenantId
dell'esempio precedente, altrimenti si genera un file JSON non valido. Durante la distribuzione viene visualizzato il messaggio di errore "Accesso non riuscito con errore", il contenuto non è un oggetto JSON valido. Verificare se “auth-type” è corretto".
Configurare i segreti GitHub
Creare segreti per le credenziali di Azure, il gruppo di risorse e le sottoscrizioni. Questi segreti vengono usati nella sezione Creare flusso di lavoro.
In GitHubpassare al repository.
Selezionare Impostazioni > Segreti e variabili > Azioni > Nuovo segretodel repository.
Incollare l'intero output JSON del comando dell'interfaccia della riga di comando di Azure nel campo del valore del segreto. Assegnare al segreto il nome
AZURE_CREDENTIALS
.Creare un altro segreto denominato
AZURE_RG
. Aggiungere il nome del gruppo di risorse al campo valore del segreto (exampleRG
).Creare un altro segreto denominato
AZURE_SUBSCRIPTION
. Aggiungere l'ID sottoscrizione al campo valore del segreto (ad esempio:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
).
Aggiungere un file Bicep
Aggiungere un file Bicep al repository GitHub. Il file Bicep seguente crea un account di archiviazione:
@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
Il file Bicep richiede un parametro denominato storagePrefix con 3-11 caratteri.
È possibile inserire il file in un punto qualsiasi del repository. L'esempio del flusso di lavoro nella sezione successiva presuppone che il file Bicep sia denominato main.bicepe che sia archiviato nella radice del repository.
Creare un flusso di lavoro
Un flusso di lavoro definisce i passaggi da eseguire quando viene attivato. Si tratta di un file YAML (.yml) nel percorso .github/workflows/ del repository. Il file del flusso di lavoro può avere estensione .yml o .yaml.
Per creare un flusso di lavoro, seguire questa procedura:
Dal repository GitHub, selezionare Actions dal menu in alto.
Selezionare Nuovo flusso di lavoro.
Selezionare Set up a workflow yourself (Configurare manualmente un flusso di lavoro).
Se si preferisce un nome diverso da main.yml, rinominare il file del flusso di lavoro. Ad esempio: deployBicepFile.yml.
Sostituire il contenuto del file yml con il codice seguente:
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
Sostituire
mystore
con il prefisso del nome dell'account di archiviazione.Nota
È possibile invece specificare un file di parametri in formato JSON nell'azione Distribuire ARM (ad esempio:
.azuredeploy.parameters.json
).La prima sezione del file del flusso di lavoro include:
- name: il nome del flusso di lavoro.
- on: nome degli eventi GitHub che attivano il flusso di lavoro. Il flusso di lavoro viene attivato quando è presente un evento push nel ramo principale.
Selezionare Eseguire il commit delle modifiche.
Selezionare Eseguire il commit direttamente nel ramo master.
Selezionare Commit new file (Commit nuovo file) (o Commit modifiche).
L'aggiornamento del file del flusso di lavoro o del file Bicep attiva il flusso di lavoro. Il flusso di lavoro viene avviato subito dopo il commit delle modifiche.
Controllare lo stato del flusso di lavoro
- Selezionare la scheda Actions. Viene visualizzato un flusso di lavoro Crea deployBicepFile.yml elencato. L'esecuzione del flusso di lavoro richiede 1-2 minuti.
- Selezionare il flusso di lavoro per aprirlo e verificare che
Status
siaSuccess
.
Pulire le risorse
Quando il gruppo di risorse e il repository non sono più necessari, pulire le risorse distribuite eliminando il gruppo di risorse e il repository GitHub.
az group delete --name exampleRG