Dela via


Importera konfigurationsfiler från din GitHub-lagringsplats till App Configuration Store

Om du har använt Konfiguration som kod och hanterar dina konfigurationer i GitHub kan du använda GitHub Actions för att automatiskt importera konfigurationsfiler från din GitHub-lagringsplats till ditt App Configuration Store. På så sätt kan du göra ändringar i dina konfigurationsfiler som vanligt, samtidigt som du får fördelar med App Configuration Store som:

  • Centraliserad konfiguration utanför koden.
  • Uppdaterar konfigurationen utan att distribuera om hela appen.
  • Integrering med tjänster som Azure App Service och Functions.

Ett GitHub Action-arbetsflöde definierar en automatiserad process på en GitHub-lagringsplats. Om du vill importera en konfigurationsfil från din GitHub-lagringsplats till Azure App Configuration Store använder du Azure CLI GitHub-åtgärden, som innehåller fullständiga funktioner för filimport till appkonfigurationsarkivet.

Autentisering

Om du vill importera konfigurationer till ditt Azure App Configuration Store kan du autentisera med någon av följande metoder:

Använda Microsoft Entra-ID

Det rekommenderade sättet att autentisera är att använda Microsoft Entra-ID, vilket gör att du kan ansluta till dina Azure-resurser på ett säkert sätt. Du kan automatisera autentiseringsprocessen med hjälp av Azure Login GitHub-åtgärden.

Med Azure Login kan du autentisera med hjälp av tjänstens huvudnamn med hemligheter eller OpenID Connect med en federerad identitetsautentiseringsuppgift. I det här exemplet använder du OpenID Connect för att logga in på appkonfigurationsarkivet.

Använda Azure-inloggning med OpenID Connect

Om du vill använda Azure Login med OpenID Connect måste du:

  1. Konfigurera ett Microsoft Entra-program med tjänstens huvudnamn.
  2. Tilldela ditt Microsoft Entra-program rollen App Configuration Data Owner så att gitHub-åtgärden kan läsa och skriva till appkonfigurationsarkivet.
  3. Ange klient-ID, klient-ID och prenumerations-ID för ditt Microsoft Entra-program till inloggningsåtgärden. Dessa värden kan anges direkt i arbetsflödet eller lagras som GitHub-hemligheter för bättre säkerhet. I exemplet nedan anges dessa värden som hemligheter. Mer information om hur du använder hemligheter i GitHub finns i Använda hemligheter i GitHub Actions.

Om du vill börja använda den här GitHub-åtgärden går du till lagringsplatsen och väljer fliken Åtgärder. Välj Nytt arbetsflöde och sedan Konfigurera ett arbetsflöde själv. Slutligen söker du på Marketplace efter "Azure Login". När du hittar den klickar du på åtgärden och kopierar det angivna kodfragmentet till arbetsflödesfilen.

Välj fliken Åtgärd

Välj Azure-inloggningsåtgärden

Exempel med 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 }}

Använd en anslutningssträng

Du kan också autentisera genom att skicka anslutningssträng direkt till Azure CLI-kommandot. Den här metoden innebär att hämta anslutningssträng från Azure Portal och använda den i dina kommandon eller skript.

För att komma igång hittar du anslutningssträng under Åtkomstinställningar för appkonfigurationsarkivet i Azure Portal.

Ange sedan den här anslutningssträng som en hemlig variabel på din GitHub-lagringsplats. Mer information om hur du använder hemligheter i GitHub finns i Använda hemligheter i GitHub Actions..

Exempel med hjälp av en anslutningssträng

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> }}

Import av konfigurationsfil

Du använder Azure CLI GitHub-åtgärden för att importera en konfigurationsfil till appkonfigurationsarkivet. Om du vill börja använda den här GitHub-åtgärden går du till lagringsplatsen och väljer fliken Åtgärder. Välj Nytt arbetsflöde och sedan Konfigurera ett arbetsflöde själv. Slutligen söker du på marketplace efter "Azure CLI Action". När du hittar den klickar du på åtgärden och kopierar det angivna kodfragmentet till arbetsflödesfilen.

Välj Azure CLI-åtgärden

I följande exempel använder du Azure CLI-åtgärden för att importera konfigurationsfiler till ett Azure App Configuration Store när en ändring skickas till appsettings.json. När en utvecklare skickar en ändring till appsettings.jsonuppdaterar skriptet som skickas till Azure CLI-åtgärden App Configuration Store med de nya värdena.

Avsnittet i det här arbetsflödet anger att åtgärden utlöses en push-överföring som innehåller appsettings.json till huvudgrenen. I avsnittet Jobb visas jobben som körs när åtgärden har utlösts. Åtgärden checkar ut relevanta filer och uppdaterar App Configuration Store.

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

Mer information om CLI-importkommandon för Azure App Configuration finns i CLI-dokumentationen för Azure AppConfifguration.

Använda en dynamisk etikett vid import

Att använda en dynamisk etikett för varje import är ett bra sätt att upprätthålla tydlig och exakt versionskontroll av dina konfigurationer. Det gör att varje import till appkonfigurationsarkivet kan identifieras unikt, vilket gör det enklare att mappa kodändringar till konfigurationsuppdateringar.

Exempel med en dynamisk etikett vid import

I följande exempel har alla nyckelvärden som importerats en unik etikett baserat på incheckningshash.

 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

Nästa steg

Om du vill lära dig hur du använder CLI-importkommandon kan du läsa vår omfattande guide för Azure CLI-importkommandon.

Mer information om olika filinnehållsprofiler finns i Stöd för Azure App Configuration för konfigurationsfiler.