Synchronizace úložiště GitHub s App Configuration
Týmy, které chtějí dál používat své stávající postupy správy zdrojového kódu, můžou pomocí GitHub Actions automaticky synchronizovat své úložiště GitHub se svým úložištěm App Configuration. To vám umožní provádět změny v konfiguračních souborech obvyklým způsobem a zároveň získat App Configuration výhod, jako jsou:
• 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 Functions.
Pracovní postup GitHub Actions definuje automatizovaný proces v úložišti GitHub. Akce synchronizace Azure App Configuration aktivuje aktualizaci instance App Configuration při provedení změn ve zdrojovém úložišti. K definování kroků a parametrů používá soubor YAML (.yml), který se nachází v /.github/workflows/
cestě k vašemu úložišti. Aktualizace konfigurace můžete aktivovat při nabízení, kontrole nebo větvení konfiguračních souborů aplikací stejně jako u kódu aplikace.
Dokumentace ke GitHubu poskytuje podrobné zobrazení pracovních postupů a akcí GitHubu.
Povolení GitHub Actions v úložišti
Pokud chcete tuto akci GitHubu začít používat, přejděte do úložiště a vyberte kartu Actions (Akce ). Vyberte Nový pracovní postup a pak nastavte pracovní postup sami. Nakonec na marketplace vyhledejte "Azure App Configuration Sync".
Synchronizace konfiguračních souborů po nasdílení změn
Tato akce synchronizuje Azure App Configuration soubory při odeslání změny do appsettings.json
. Když vývojář odešle změnu do appsettings.json
, akce App Configuration Synchronizovat aktualizuje instanci App Configuration novými hodnotami.
První část tohoto pracovního postupu určuje, že akce se aktivuje přinasdílení změn obsahujícíchappsettings.json
hlavní větev. Druhá část obsahuje seznam úloh spuštěných po aktivaci akce. Akce zkontroluje příslušné soubory a aktualizuje instanci App Configuration pomocí připojovacího řetězce uloženého jako tajný kód v úložišti. Další informace o používání tajných kódů v GitHubu najdete v článku o vytváření a používání šifrovaných tajných kódů v GitHubu .
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žití striktní synchronizace
Akce GitHubu ve výchozím nastavení nepovoluje striktní režim, což znamená, že synchronizace přidá do instance App Configuration pouze hodnoty klíč-hodnota z konfiguračního souboru (neodstraní se žádné páry klíč-hodnota). Povolení striktního režimu znamená, že dvojice klíč-hodnota, které nejsou v konfiguračním souboru, se z instance App Configuration odstraní, aby odpovídala konfiguračnímu souboru. Pokud provádíte synchronizaci z více zdrojů nebo používáte Azure Key Vault s App Configuration, budete chtít použít různé předpony nebo popisky se striktní synchronizací, abyste se vyhnuli 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 rámci jedné akce
Pokud máte konfiguraci ve více souborech, můžete při úpravě některého souboru aktivovat synchronizaci pomocí následujícího vzoru. Tento vzor používá knihovnu https://www.npmjs.com/package/glob glob . Všimněte si, že pokud název konfiguračního souboru obsahuje čárku, můžete použít zpětné lomítko jako řídicí znak.
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: ':'
Synchronizace podle předpony nebo popisku
Zadáním předpon nebo popisků v akci synchronizace se synchronizuje jenom 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 předpona nebo popisek přidružena ke každému souboru a každá předpona nebo popisek se pak může synchronizovat samostatně, takže se nic nepřepíše. Předpony se obvykle používají pro různé aplikace nebo služby a popisky se používají pro různá prostředí.
Synchronizovat 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'
Použití dynamického popisku při synchronizaci
Následující akce vloží do každé synchronizace dynamický popisek, který zajistí jedinečnou identifikaci každé synchronizace a umožní mapování změn kódu na změny konfigurace.
První část tohoto pracovního postupu určuje, že akce se aktivuje přinasdílení změn obsahujícíchappsettings.json
hlavní větev. Druhá část spustí úlohu, která vytvoří jedinečný popisek pro aktualizaci konfigurace na základě hodnoty hash potvrzení. Úloha pak aktualizuje instanci App Configuration novými hodnotami a jedinečným popiskem 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 GitHub Action
Vývojáři, kteří používají Azure Key Vault s AppConfiguration, by měli používat dva samostatné soubory, obvykle appsettings.json a secretreferences.json. Soubor secretreferences.json bude obsahovat adresu URL tajného kódu trezoru klíčů.
{ "mySecret": "{"uri":"https://myKeyVault.vault.azure.net/secrets/mySecret"}" }
Akci GitHubu je pak možné nakonfigurovat tak, aby řídila striktní synchronizaci souboru appsettings.json následovanou nestriktní synchronizací souboru secretreferences.json. Následující ukázka aktivuje synchronizaci při aktualizaci některého ze souborů:
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'
Použití maximální hloubky k omezení akce GitHubu
Výchozím chováním vnořených atributů JSON je zploštět celý objekt. Následující kód JSON definuje tento pár klíč-hodnota:
Klíč | Hodnota |
---|---|
Objekt:Inner:InnerKey | Vnitřní hodnota |
{ "Object":
{ "Inner":
{
"InnerKey": "InnerValue"
}
}
}
Pokud je vnořený objekt určen jako hodnota vložená do instance configuration, můžete použít hodnotu hloubky k zastavení zploštělování 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
S ohledem na hloubku 2 teď výše uvedený příklad vrátí následující dvojici klíč-hodnota:
Klíč | Hodnota |
---|---|
Objekt:Vnitřní | {"InnerKey":"InnerValue"} |
Vysvětlení vstupů akcí
Vstupní parametry určují data používaná akcí za běhu. Následující tabulka obsahuje vstupní parametry přijímané službou App Configuration Sync a očekávané hodnoty pro každý z nich. Další informace o vstupech akcí pro GitHub Actions najdete v dokumentaci ke GitHubu.
Poznámka
Id vstupu nerozlišují malá a velká písmena.
Název vstupu | Povinné? | Hodnota |
---|---|---|
konfigurační soubor | Yes | Relativní cesta ke konfiguračnímu souboru v úložišti Vzory glob jsou podporované a můžou obsahovat více souborů. |
formát | Yes | Formát konfiguračního souboru. Platné formáty jsou JSON, YAML a vlastnosti. |
připojovací řetězec | Yes | Připojovací řetězec pro čtení i zápis pro instanci App Configuration. Připojovací řetězec by měl být uložený jako tajný kód v úložišti GitHub a v pracovním postupu by se měl používat jenom název tajného klíče. |
Oddělovač | Yes | Oddělovač používaný při zploštělování konfiguračního souboru na páry klíč-hodnota. Platné hodnoty jsou: . , ; : - _ __ / |
Předponu | No | Předpona, která se má přidat na začátek klíčů. |
label | No | Popisek použitý při nastavení párů klíč-hodnota. Pokud není zadán, použije se popisek null. |
přísné | No | Logická hodnota, která určuje, jestli je povolený striktní režim. Výchozí hodnota je False. |
Hloubka | No | Maximální hloubka pro zploštělování konfiguračního souboru. Hloubka musí být kladné číslo. Výchozí hodnota nebude mít žádnou maximální hloubku. |
tags | No | Určuje značku nastavenou u párů klíč-hodnota. Očekávaný formát je řetězcová forma objektu JSON s následujícím tvarem: { [propertyName: string]: string; } Každý název-hodnota vlastnosti se stane značkou. |
Další kroky
V tomto článku jste se dozvěděli o akci GitHubu App Configuration Synchronizovat a o tom, jak ji můžete použít k automatizaci aktualizací vaší instance App Configuration. Pokud chcete zjistit, jak Azure App Configuration reaguje na změny párů klíč-hodnota, pokračujte k dalšímu článku.