Condividi tramite


Importare i file di configurazione dal repository GitHub nell'archivio di Configurazione app

Se è stata adottata la configurazione come codice e si gestiscono le configurazioni in GitHub, è possibile usare GitHub Actions per importare automaticamente i file di configurazione dal repository GitHub nell'archivio di Configurazione app. In questo modo è possibile apportare modifiche ai file di configurazione come si farebbe normalmente, ottenendo al tempo stesso vantaggi per l’archivio di Configurazione app, ad esempio:

  • Configurazione centralizzata all'esterno del codice.
  • Aggiornamento della configurazione senza dover ridistribuire l'intera app.
  • Integrazione con servizi come Servizio app e Funzioni di Azure.

Un flusso di lavoro di GitHub Actions definisce un processo automatizzato in un repository GitHub. Per importare un file di configurazione dal repository GitHub nell'archivio di Configurazione app di Azure, usare l'azione GitHub dell'interfaccia della riga di comando di Azure, che offre funzionalità complete per l'importazione di file nell'archivio di Configurazione app.

Autenticazione

Per importare configurazioni nell'archivio di Configurazione app di Azure, è possibile eseguire l'autenticazione con uno dei metodi seguenti:

Usare Microsoft Entra ID

Il modo consigliato per eseguire l'autenticazione consiste nell'usare Microsoft Entra ID, che consente di connettersi in modo sicuro alle risorse di Azure. È possibile automatizzare il processo di autenticazione usando l'azione GitHub di accesso Azure.

L'accesso Azure consente di eseguire l'autenticazione usando entità servizio con segreti oppure OpenID Connect con credenziali di identità federate. In questo esempio si userà OpenID Connect per accedere all'archivio di Configurazione app.

Usare l'account di accesso Azure con OpenID Connect

Per usare l'account di accesso Azure con OpenID Connect, è necessario:

  1. Configurare un'applicazione Microsoft Entra con un'entità servizio.
  2. Assegnare all'applicazione Microsoft Entra il ruolo Proprietario dati configurazione app per consentire all'azione GitHub di leggere e scrivere nell'archivio di Configurazione app.
  3. Specificare l'ID client, l'ID tenant el'ID sottoscrizione dell'applicazione Microsoft Entra all'azione di accesso. Questi valori possono essere forniti direttamente nel flusso di lavoro o archiviati come segreti GitHub per una maggiore sicurezza. Nell'esempio seguente questi valori vengono impostati come segreti. Per altre informazioni sull'uso dei segreti in GitHub, vedere Uso dei segreti in GitHub Actions.

Per iniziare a usare questa azione GitHub, passare al repository e selezionare la scheda Azioni. Selezionare Nuovo flusso di lavoro, quindi Configura un flusso di lavoro. Cercare infine "Azure Login" nel marketplace. Dopo averlo trovato, fare clic sull'azione e copiare il frammento specificato nel file del flusso di lavoro.

Selezionare la scheda Azione

Selezionare l'azione di accesso di Azure

Esempio di utilizzo di Microsoft Entra ID

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Usare una stringa di connessione

In alternativa, è possibile eseguire l'autenticazione passando la stringa di connessione direttamente al comando dell'interfaccia della riga di comando di Azure. Questo metodo comporta il recupero della stringa di connessione dal portale di Azure e il suo uso nei comandi o negli script.

Per iniziare, è possibile trovare la stringa di connessione in Impostazioni di accesso dell'archivio di Configurazione app nel portale di Azure.

Impostare quindi questa stringa di connessione come variabile segreto nel repository GitHub. Per altre informazioni sull'uso dei segreti in GitHub, vedere Uso dei segreti in GitHub Actions.

Esempio di utilizzo di una stringa di connessione

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest
    
    # pass the secret variable as an environment variable to access it in your CLI action.
    env:
      CONNECTION_STRING: ${{ secrets.<ConnectionString> }}

Importazione di file di configurazione

Usare l’azione GitHub dell'interfaccia della riga di comando di Azure per importare un file di configurazione nell'archivio di Configurazione app. Per iniziare a usare questa azione GitHub, passare al repository e selezionare la scheda Azioni. Selezionare Nuovo flusso di lavoro, quindi Configura un flusso di lavoro. Infine, cercare "Azione dell'interfaccia della riga di comando di Azure" nel marketplace. Dopo averlo trovato, fare clic sull'azione e copiare il frammento specificato nel file del flusso di lavoro.

Selezionare l'azione dell'interfaccia della riga di comando di Azure

Nell'esempio seguente viene usata l'azione dell'interfaccia della riga di comando di Azure per importare i file di configurazione in un archivio di Configurazione app di Azure quando viene eseguito il push di una modifica in appsettings.json. Quando uno sviluppatore esegue il push di una modifica in appsettings.json, lo script passato all'azione dell'interfaccia della riga di comando di Azure aggiorna l'archivio di Configurazione app con i nuovi valori.

La sezione on di questo flusso di lavoro specifica che l'azione attiva (on) un push contenente appsettings.json nel ramo principale. Nella sezione processi vengono elencati i processi eseguiti dopo l'attivazione dell'azione. L'azione estrae i file pertinenti e aggiorna l'archivio di Configurazione app.

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read

jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes

Per altre informazioni sui comandi CLI di importazione di Configurazione app di Azure, vedere la documentazione dell'interfaccia della riga di comando di Azure AppConfifguration.

Usare un'etichetta dinamica durante l’importazione

L'uso di un'etichetta dinamica in ogni importazione è un buon modo per mantenere un controllo chiaro e preciso della versione delle configurazioni. Consente di identificare in modo univoco ogni importazione nell'archivio di Configurazione app, semplificando il mapping delle modifiche del codice con gli aggiornamenti della configurazione.

Esempio dell’uso di un'etichetta dinamica nell'importazione

Nell'esempio seguente tutti i valori chiave importati avranno un'etichetta univoca basata sull'hash di commit.

 jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps:      
      # Creates a label based on the branch name and the first 8 characters          
      # of the commit hash 
      - id: determine_label 
        run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}" 
      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

Passaggi successivi

Per informazioni su come usare i comandi di importazione dell'interfaccia della riga di comando, vedere la guida completa ai comandi di importazione dell'interfaccia della riga di comando di Azure.

Per altre informazioni sui diversi profili di contenuto dei file, vedere Supporto di Configurazione app di Azure per i file di configurazione.