Synchronizovat úložiště GitHub s konfigurací aplikace
Týmy, které chtějí dál používat své stávající postupy správy zdrojového kódu, můžou použít akce GitHubu k automatické synchronizaci svého úložiště GitHub s úložištěm konfigurace aplikace. To vám umožní provádět změny v konfiguračních souborech, jako byste to obvykle měli, a přitom získat výhody konfigurace aplikace jako:
• Centralizovaná konfigurace mimo váš kód
• Aktualizace konfigurace bez opětovného nasazení celé aplikace
• Integrace se službami, jako jsou Azure App Service a funkce.
Pracovní postup akcí GitHubu definuje automatizovaný proces v úložišti GitHub. Akce synchronizace konfigurace aplikace Azure aktivuje aktualizace instance konfigurace aplikace, když se provedou změny ve zdrojovém úložišti. Pomocí souboru YAML (. yml), který se nachází v /.github/workflows/ cestě k úložišti, můžete definovat kroky a parametry. Aktualizace konfigurace můžete aktivovat při doručování, revizi nebo rozvětvení konfiguračních souborů aplikace stejně jako s kódem aplikace.
Dokumentace k GitHubu poskytuje podrobný pohled na pracovní postupy a akce GitHubu.
Povolení akcí GitHubu v úložišti
Tuto akci GitHubu můžete začít používat tak, že přejdete do svého úložiště a vyberete kartu Akce . Vyberte nový pracovní postup a pak nastavte pracovní postup sami. Nakonec na webu Marketplace vyhledejte "synchronizace konfigurace aplikací Azure".


Synchronizovat konfigurační soubory po vložení
Tato akce synchronizuje konfigurační soubory aplikace Azure při vložení změny do appsettings.json . Když vývojář nahraje změnu na appsettings.json , akce synchronizace konfigurace aplikace aktualizuje instanci konfigurace aplikace o nové hodnoty.
První část tohoto pracovního postupu určuje, že akce se spustí u nabízených oznámení , která obsahují appsettings.json do hlavní větve. Druhá část uvádí úlohy, které se spustí, jakmile se spustí akce. Tato akce rezervuje příslušné soubory a aktualizuje instanci konfigurace aplikace pomocí připojovacího řetězce uloženého jako tajného klíče v úložišti. Další informace o používání tajných kódů v GitHubu najdete v článku GitHubu o vytváření a používání šifrovaných tajných klíčů.
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: ':'
Použít striktní synchronizaci
Ve výchozím nastavení akce GitHub nepovoluje striktní režim, což znamená, že synchronizace přidá do instance aplikace pouze hodnoty klíče z konfiguračního souboru (žádné páry klíč-hodnota nebudou odstraněny). Povolení striktního režimu znamená, že páry klíč-hodnota, které nejsou v konfiguračním souboru, se odstraní z instance konfigurace aplikace tak, aby odpovídaly konfiguračnímu souboru. Pokud synchronizujete z více zdrojů nebo pomocí Azure Key Vault s konfigurací aplikace, budete chtít použít jiné předpony nebo popisky s přísnou synchronizací, aby nedocházelo k vymazání konfiguračních nastavení z jiných souborů (viz ukázky níže).
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
Synchronizace více souborů v jedné akci
Pokud je vaše konfigurace ve více souborech, můžete použít následující vzor, který spustí synchronizaci při změně některého souboru. Tento model používá knihovnu glob https://www.npmjs.com/package/glob . Všimněte si, že pokud název konfiguračního souboru obsahuje čárku, můžete použít zpětné lomítko k označení čárky.
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: ':'
Synchronizovat podle předpony nebo popisku
Zadáním předpon nebo popisků v akci synchronizace se synchronizuje pouze tato konkrétní sada. To je důležité pro použití striktní synchronizace s více soubory. V závislosti na tom, jak je konfigurace nastavená, může být k jednotlivým souborům přidružená buď předpona, nebo popisek, přičemž každou předponu nebo popisek můžete synchronizovat samostatně, aby se nic nepřepsalo. Předpony se obvykle používají pro různé aplikace nebo služby a popisky se používají pro různá prostředí.
Synchronizace podle předpony:
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::'
Synchronizovat podle popisku:
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'
Při synchronizaci použít dynamický popisek
Následující akce vloží dynamický popisek pro každou synchronizaci, což zajistí, že každou synchronizaci lze jednoznačně identifikovat a povolit mapování změn kódu na změny konfigurace.
První část tohoto pracovního postupu určuje, že akce se spustí u nabízených oznámení , která obsahují appsettings.json do hlavní větve. Druhá část spustí úlohu, která vytvoří jedinečnou jmenovku pro aktualizaci konfigurace na základě hodnoty hash potvrzení. Úloha pak aktualizuje instanci konfigurace aplikace o nové hodnoty a jedinečnou jmenovku pro tuto aktualizaci.
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 }}
Použití Azure Key Vault s akcí GitHubu
Vývojáři, kteří používají Azure Key Vault s AppConfiguration, by měli používat dva samostatné soubory, obvykle appsettings.jsa secretreferences.jsna. secretreferences.jsna bude obsahovat adresu URL tajného klíče trezoru klíčů.
{"mySecret": "{ " URI " :" " https://myKeyVault.vault.azure.net/secrets/mySecret } "}
Akce GitHubu se pak dá nakonfigurovat tak, aby se na appsettings.jsna, a po secretreferences.jsnestriktní synchronizaci na systému nakonfigurovala striktní synchronizace. Následující ukázka spustí synchronizaci, je-li soubor aktualizován:
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'
Omezit akci GitHubu pomocí maximální hloubky
Výchozím chováním pro vnořené atributy JSON je sloučení celého objektu. Následující kód JSON definuje tuto dvojici klíč-hodnota:
| Klíč | Hodnota |
|---|---|
| Objekt: vnitřní: InnerKey | InnerValue |
{ "Object":
{ "Inner":
{
"InnerKey": "InnerValue"
}
}
}
Pokud má vnořený objekt hodnotu vloženou do instance konfigurace, můžete použít hodnotu hloubky k zastavení sloučení v příslušné hloubce.
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
V případě, že výše uvedená hloubka je 2, vrátí výše uvedený příklad následující pár klíč-hodnota:
| Klíč | Hodnota |
|---|---|
| Objekt: vnitřní | {"InnerKey": "InnerValue"} |
Pochopení vstupů akcí
Vstupní parametry určují data, která akce používá během běhu. Následující tabulka obsahuje vstupní parametry akceptované synchronizací konfigurace aplikace a očekávané hodnoty pro každý z nich. Další informace o vstupech akcí pro akce GitHubu najdete v dokumentaci kGitHubu.
Poznámka
U ID vstupu se nerozlišují malá a velká písmena.
| Název vstupu | Povinné? | Hodnota |
|---|---|---|
| configurationFile | Yes | Relativní cesta ke konfiguračnímu souboru v úložišti Jsou podporovány vzory glob a mohou obsahovat více souborů. |
| formát | Yes | Formát souboru konfiguračního souboru. Platné formáty jsou: JSON, YAML, Properties. |
| připojovací řetězec | Yes | Připojovací řetězec pro instanci konfigurace aplikace Připojovací řetězec by měl být uložen jako tajný klíč v úložišti GitHub a v pracovním postupu by měl být použit pouze tajný název. |
| oddělování | Yes | Oddělovač použitý při sloučení konfiguračního souboru na páry klíč-hodnota. Platné hodnoty jsou:. , ; : - _ __ / |
| směr | No | Předpona, která se má přidat na začátek klíčů |
| label | No | Popisek použitý při nastavování párů klíč-hodnota Je-li tento parametr zadán, je použit popisek s hodnotou null. |
| přísné | No | Logická hodnota, která určuje, zda je povolen striktní režim. Výchozí hodnota je False. |
| úrovní | No | Maximální hloubka pro sloučení konfiguračního souboru. Hloubka musí být kladné číslo. Výchozí hodnota nebude mít žádnou maximální hloubku. |
| tags | No | Určuje sadu značek pro páry klíč-hodnota. Očekávaným formátem je dokument formulář objektu JSON následujícího obrazce: {[propertyName: String]: String;} Název každé vlastnosti – hodnota se zobrazí jako značka. |
Další kroky
V tomto článku jste se dozvěděli o akci GitHubu pro synchronizaci konfigurace aplikace a o tom, jak se dá použít k automatizaci aktualizací instance konfigurace aplikace. Další informace o tom, jak konfigurace aplikace Azure reaguje na změny v páru klíč-hodnota, najdete v dalším článku.