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:
- Konfigurera ett Microsoft Entra-program med tjänstens huvudnamn.
- Tilldela ditt Microsoft Entra-program rollen App Configuration Data Owner så att gitHub-åtgärden kan läsa och skriva till appkonfigurationsarkivet.
- 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.
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 niska veze direkt till Azure CLI-kommandot. Den här metoden innebär att hämta niska veze från Azure-portalen och använda den i dina kommandon eller skript.
För att komma igång hittar du niska veze under Åtkomstinställningar för appkonfigurationsarkivet i Azure-portalen.
Ange sedan den här niska veze 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 niska veze
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.
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.json
uppdaterar 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 på 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.