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

Crea gruppo di risorse

Crea un gruppo di risorse. Più avanti in questo argomento di avvio rapido si distribuirà 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 a questo esempio.

  {
    "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 di non avere una virgola aggiuntiva alla fine dell'ultima riga, ad esempio la riga tenantId nell'esempio precedente o che genererà un file JSON non valido. Durante la distribuzione verrà visualizzato un errore che indica che l'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 verranno usati nella sezione Creare flusso di lavoro.

  1. In GitHubpassare al repository.

  2. Selezionare Impostazioni > Segreti e variabili > Azioni > Nuovo segretodel repository.

  3. 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.

  4. Creare un altro segreto denominato AZURE_RG. Aggiungere il nome del gruppo di risorse al campo valore del segreto (exampleRG).

  5. Creare un altro segreto denominato AZURE_SUBSCRIPTION. Aggiungere l'ID sottoscrizione al campo valore del segreto (ad esempio: 90fd3f9d-4c61-432d-99ba-1273f236afa2).

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@2021-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:

  1. Dal repository GitHub, selezionare Actions dal menu in alto.

  2. Selezionare Nuovo flusso di lavoro.

  3. Selezionare Set up a workflow yourself (Configurare manualmente un flusso di lavoro).

  4. Se si preferisce un nome diverso da main.yml, rinominare il file del flusso di lavoro. Ad esempio: deployBicepFile.yml.

  5. 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 specificare invece un file di parametri di formato JSON nell'azione ARM Deploy (ad esempio: .azuredeploy.parameters.json).

    La prima sezione del file del flusso di lavoro include:

    • name: 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.
  6. Selezionare Eseguire il commit delle modifiche.

  7. Selezionare Eseguire il commit direttamente nel ramo master.

  8. 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

  1. Selezionare la scheda Actions. Verrà visualizzato un flusso di lavoro Crea deployBicepFile.yml elencato. L'esecuzione del flusso di lavoro richiede 1-2 minuti.
  2. Selezionare il flusso di lavoro per aprirlo e verificare che Status sia Success.

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

Passaggi successivi