Synkronisera din GitHub-lagringsplats med app-konfigurationen
Team som vill fortsätta använda sina befintliga käll kontroll metoder kan använda GitHub-åtgärder för att automatiskt synkronisera sina GitHub-lagringsplatser med sitt konfigurations lager för appar. På så sätt kan du göra ändringar i config-filerna precis som vanligt, samtidigt som du får program konfigurations förmåner som:
• Centraliserad konfiguration utanför din kod
• Uppdatera konfigurationen utan att distribuera om hela appen
• Integrering med tjänster som Azure App Service och funktioner.
Ett arbets flöde för GitHub-åtgärder definierar en automatiserad process i en GitHub-lagringsplats. Åtgärden Azure App Sync-konfiguration utlöser uppdateringar till en konfigurations instans för appar när ändringar görs i käll lagrings platsen. Den använder en YAML-fil (. yml) som finns i /.github/workflows/ sökvägen till lagrings platsen för att definiera stegen och parametrarna. Du kan utlösa konfigurations uppdateringar när du skickar, granska eller förgrena appars konfigurationsfiler precis som du gör med app-kod.
GitHub- dokumentationen innehåller djupgående visning av GitHub-arbetsflöden och åtgärder.
Aktivera GitHub-åtgärder i din lagrings plats
Börja använda den här GitHub-åtgärden genom att gå till din lagrings plats och välja fliken åtgärder . Välj nytt arbets flöde och skapa sedan ett arbets flöde själv. Slutligen söker du efter "Azure App konfigurations synkronisering" på Marketplace.


Synkronisera konfigurationsfiler efter en push
Den här åtgärden synkroniserar Azure App konfigurationsfiler när en ändring skickas till appsettings.json . När en utvecklare skickar en ändring till appsettings.json , uppdaterar synkroniseringen av app Configuration-instansen med de nya värdena.
I det första avsnittet av det här arbets flödet anges att åtgärden utlöses på en push som innehåller appsettings.json till huvud grenen. I det andra avsnittet visas jobben som körs när åtgärden har Aktiver ATS. Åtgärden kontrollerar de relevanta filerna och uppdaterar konfigurations instansen för appen med hjälp av anslutnings strängen som lagras som en hemlighet i lagrings platsen. Mer information om hur du använder hemligheter i GitHub finns i GitHub-artikeln om hur du skapar och använder krypterade hemligheter.
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your
# repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
Använd strikt synkronisering
Som standard aktiverar GitHub-åtgärden inte strikt läge, vilket innebär att synkroniseringen bara lägger till nyckel värden från konfigurations filen till appens konfigurations instans (inga nyckel/värde-par tas bort). Att aktivera strikt läge innebär att nyckel/värde-par som inte finns i konfigurations filen tas bort från program konfigurations instansen, så att den matchar konfigurations filen. Om du synkroniserar från flera källor eller använder Azure Key Vault med konfiguration av appar vill du använda olika prefix eller etiketter med strikt synkronisering för att undvika att ta bort konfigurations inställningar från andra filer (se exemplen nedan).
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your
# repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
label: 'Label'
prefix: 'Prefix:'
strict: true
Synkronisera flera filer i en åtgärd
Om konfigurationen finns i flera filer kan du använda mönstret nedan för att utlösa en synkronisering när någon av filerna ändras. Det här mönstret använder BLOB-biblioteket https://www.npmjs.com/package/glob . Observera att om namnet på konfigurations filen innehåller ett kommatecken kan du använda ett omvänt snedstreck för att undvika kommatecken.
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
- 'appsettings2.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: '{appsettings.json,appsettings2.json}'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
Synkronisera efter prefix eller etikett
Om du anger prefix eller etiketter i din synkroniseringsrelation synkroniseras bara den specifika uppsättningen. Detta är viktigt för att använda strikt synkronisering med flera filer. Beroende på hur konfigurationen har kon figurer ATS kan antingen ett prefix eller en etikett vara kopplad till varje fil och varje prefix eller etikett kan synkroniseras separat så att inget skrivs över. Vanligt vis används prefix för olika program eller tjänster och etiketter för olika miljöer.
Synkronisera efter prefix:
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
prefix: 'Prefix::'
Synkronisera efter etikett:
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
label: 'Label'
Använd en dynamisk etikett vid synkronisering
Följande åtgärd infogar en dynamisk etikett vid varje synkronisering, vilket säkerställer att varje synkronisering kan identifieras unikt och tillåter att kod ändringar mappas till konfigurations ändringar.
I det första avsnittet av det här arbets flödet anges att åtgärden utlöses på en push som innehåller appsettings.json till huvud grenen. Det andra avsnittet kör ett jobb som skapar en unik etikett för konfigurations uppdateringen baserat på commit hash. Jobbet uppdaterar sedan appens konfigurations instans med de nya värdena och den unika etiketten för uppdateringen.
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
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/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your
# repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
label: ${{ steps.determine_label.outputs.LABEL }}
Använd Azure Key Vault med GitHub-åtgärd
Utvecklare som använder Azure Key Vault med AppConfiguration bör använda två separata filer, vanligt vis en appsettings.jspå och en secretreferences.js. secretreferences.jspå kommer att innehålla URL: en till Key Vault-hemligheten.
{"hemlig hemlighet": "{ " URI " : " https://myKeyVault.vault.azure.net/secrets/mySecret "} "}
GitHub-åtgärden kan sedan konfigureras för att göra en strikt synkronisering på appsettings.js, följt av en icke-strikt synkronisering på secretreferences.js. Följande exempel utlöser en synkronisering när någon av filerna uppdateras:
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
- 'secretreferences.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
strict: true
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'secretreferences.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
contentType: 'application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8'
Använd maximalt djup för att begränsa GitHub-åtgärden
Standard beteendet för kapslade JSON-attribut är att förenkla hela objektet. JSON nedan definierar detta nyckel/värde-par:
| Tangent | Värde |
|---|---|
| Objekt: inre: InnerKey | InnerValue |
{ "Object":
{ "Inner":
{
"InnerKey": "InnerValue"
}
}
}
Om det kapslade objektet är avsett att vara det värde som skickas till konfigurations instansen kan du använda djup -värdet för att stoppa förenklingen vid lämpligt djup.
on:
push:
branches:
- 'main'
paths:
- 'appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
# checkout done so that files in the repo can be read by the sync
- uses: actions/checkout@v1
- uses: azure/appconfiguration-sync@v1
with:
configurationFile: 'appsettings.json'
format: 'json'
# Replace <ConnectionString> with the name of the secret in your
# repository
connectionString: ${{ secrets.<ConnectionString> }}
separator: ':'
depth: 2
Med ett djup på 2 returnerar exemplet ovan följande nyckel/värde-par:
| Tangent | Värde |
|---|---|
| Objekt: inre | {"InnerKey":"InnerValue"} |
Förstå åtgärds inmatningar
Indataparametrar anger data som används av åtgärden under körning. Följande tabell innehåller indataparametrar som har godkänts av app Configuration Sync och de förväntade värdena för var och en. Mer information om åtgärds inmatningar för GitHub-åtgärder finns i GitHub- dokumentationen.
Anteckning
Indatamängds-ID: n är Skift läges okänsliga.
| Inmatat namn | Obligatoriskt? | Värde |
|---|---|---|
| configurationFile | Ja | Relativ sökväg till konfigurations filen i lagrings platsen. BLOB mönster stöds och kan innehålla flera filer. |
| format | Ja | Fil format för konfigurations filen. Giltiga format är: JSON, YAML, Properties. |
| Begär | Ja | Anslutnings sträng för app Configuration-instansen. Anslutnings strängen ska lagras som en hemlighet i GitHub-lagringsplatsen och endast det hemliga namnet ska användas i arbets flödet. |
| brytning | Ja | Avgränsning som används vid förenkling av konfigurations filen till nyckel/värde-par. Giltiga värden är:. , ; : - _ __ / |
| protokollprefixet | Inga | Prefix som ska läggas till i början av nycklar. |
| etikett | Inga | Etikett som används vid inställning av nyckel/värde-par. Om inget anges används en null-etikett. |
| begränsade | Inga | Ett booleskt värde som anger om strikt läge är aktiverat. Standardvärdet är false. |
| djuplodande | Inga | Högsta djup för att förenkla konfigurations filen. Djupet måste vara ett positivt tal. Standardvärdet har inget max djup. |
| tags | Inga | Anger taggen som angetts för nyckel/värde-par. Det förväntade formatet är en stringified form av ett JSON-objekt av följande form: {[propertyName: sträng]: String;} Varje egenskaps namn-värdet blir en tagg. |
Nästa steg
I den här artikeln har du lärt dig om GitHub-åtgärden för app Configuration-synkronisering och hur den kan användas för att automatisera uppdateringar av din konfigurations instans för appar. Fortsätt till nästa artikelom du vill lära dig hur Azure App-konfigurationen reagerar på ändringar i nyckel/värde-par.