A GitHub-adattár szinkronizálása App Configuration

Azok a csapatok, amelyek továbbra is használni szeretnék a meglévő forrásvezérlési eljárásaikat, GitHub Actions használatával automatikusan szinkronizálhatják a GitHub-adattárukat a App Configuration tárházukkal. Ez lehetővé teszi, hogy a szokásos módon módosítsa a konfigurációs fájlokat, miközben App Configuration előnyöket kap, például:
    • A kódon kívüli központosított konfiguráció
    • Konfiguráció frissítése a teljes alkalmazás ismételt üzembe helyezése nélkül
    • Integráció olyan szolgáltatásokkal, mint a Azure App Service és a Functions.

A GitHub Actions munkafolyamat automatizált folyamatot határoz meg egy GitHub-adattárban. A Azure App Configuration Szinkronizálási művelet egy App Configuration-példány frissítéseit aktiválja, amikor módosításokat végez a forrásadattárban. Az adattár elérési útján található /.github/workflows/ YAML-fájlt (.yml) használja a lépések és paraméterek meghatározásához. Az alkalmazáskonfigurációs fájlok leküldése, áttekintése vagy elágaztatásakor ugyanúgy aktiválhat konfigurációfrissítéseket, mint az alkalmazáskód esetében.

A GitHub dokumentációja részletes áttekintést nyújt a GitHub-munkafolyamatokról és műveletekről.

GitHub Actions engedélyezése az adattárban

A GitHub-művelet használatának megkezdéséhez nyissa meg az adattárat, és válassza a Műveletek lapot. Válassza az Új munkafolyamat lehetőséget, majd a Munkafolyamat beállítása saját maga lehetőséget. Végül keressen rá a piactéren a "Azure App Configuration Sync" kifejezésre.

Válassza a Művelet lapot

Az alkalmazáskonfiguráció szinkronizálási műveletének kiválasztása

Konfigurációs fájlok szinkronizálása leküldés után

Ez a művelet szinkronizálja Azure App Configuration fájlokat, amikor a módosítást leküldi a fájlbaappsettings.json. Amikor egy fejlesztő módosítást küld a értékreappsettings.json, a App Configuration Szinkronizálás művelet frissíti a App Configuration példányt az új értékekkel.

A munkafolyamat első szakasza azt határozza meg, hogy a művelet egy ágat tartalmazó appsettings.jsonleküldésen aktiválódik. A második szakasz a művelet aktivált feladatait sorolja fel. A művelet ellenőrzi a megfelelő fájlokat, és frissíti az App Configuration-példányt az adattárban titkos kódként tárolt kapcsolati sztring használatával. A titkos kódok GitHubon való használatával kapcsolatos további információkért lásd a GitHub titkosított titkos kódok létrehozásáról és használatáról szóló cikkét.

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: ':' 

Szigorú szinkronizálás használata

Alapértelmezés szerint a GitHub-művelet nem engedélyezi a szigorú módot, ami azt jelenti, hogy a szinkronizálás csak a konfigurációs fájl kulcsértékeit adja hozzá a App Configuration-példányhoz (kulcs-érték párok nem törlődnek). A szigorú mód engedélyezése azt jelenti, hogy a konfigurációs fájlban nem szereplő kulcs-érték párok törlődnek a App Configuration példányból, így azok megegyeznek a konfigurációs fájllal. Ha több forrásból szinkronizál, vagy az Azure Key Vault App Configuration használ, érdemes különböző előtagokat vagy címkéket használni szigorú szinkronizálással, hogy elkerülje a konfigurációs beállítások más fájlokból való törlését (lásd az alábbi mintákat).

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 

Több fájl szinkronizálása egyetlen műveletben

Ha a konfiguráció több fájlban található, az alábbi mintával elindíthatja a szinkronizálást bármelyik fájl módosításakor. Ez a minta a glob könyvtárat https://www.npmjs.com/package/glob használja. Vegye figyelembe, hogy ha a konfigurációs fájl neve tartalmaz egy vesszőt, fordított perjellel kikerülheti a vesszőt.

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: ':'

Szinkronizálás előtaggal vagy címkével

A szinkronizálási művelet előtagjainak vagy címkéinek megadása csak az adott készletet szinkronizálja. Ez fontos a több fájllal való szigorú szinkronizáláshoz. A konfiguráció beállításától függően egy előtag vagy egy címke társítható az egyes fájlokhoz, majd az egyes előtagok vagy címkék külön szinkronizálhatók, hogy semmi ne legyen felülírva. Általában az előtagokat különböző alkalmazásokhoz vagy szolgáltatásokhoz használják, a címkéket pedig különböző környezetekhez használják.

Szinkronizálás előtaggal:

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::'

Szinkronizálás címke szerint:

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'

Dinamikus címke használata szinkronizálás esetén

Az alábbi művelet minden szinkronizáláshoz beszúr egy dinamikus címkét, biztosítva, hogy az egyes szinkronizálások egyedileg azonosíthatók legyenek, és lehetővé teszi a kódmódosítások konfigurációs módosításokhoz való hozzárendelését.

A munkafolyamat első szakasza azt határozza meg, hogy a művelet egy ágat tartalmazó appsettings.jsonleküldésen aktiválódik. A második szakasz futtat egy feladatot, amely egyedi címkét hoz létre a konfigurációs frissítéshez a véglegesítési kivonat alapján. A feladat ezután frissíti a App Configuration példányt az új értékekkel és a frissítés egyedi címkéjével.

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

Az Azure Key Vault használata a GitHub Actionvel

Az Azure Key Vault AppConfiguration használatával használó fejlesztőknek két külön fájlt kell használniuk, általában appsettings.json és secretreferences.json fájlt. A secretreferences.json tartalmazza a kulcstartó titkos kulcsának URL-címét.

{ "mySecret": "{"uri":"https://myKeyVault.vault.azure.net/secrets/mySecret"}" }

A GitHub-művelet ezután konfigurálható úgy, hogy szigorú szinkronizálást hajtson végre az appsettings.json webhelyen, majd egy nem szigorú szinkronizálást a secretreferences.json webhelyen. Az alábbi minta szinkronizálást indít el, amikor bármelyik fájl frissül:

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'

A GitHub-művelet korlátozása a maximális mélység használatával

A beágyazott JSON-attribútumok alapértelmezett viselkedése a teljes objektum simítása. Az alábbi JSON meghatározza ezt a kulcs-érték párot:

Kulcs Érték
Object:Inner:InnerKey InnerValue
{ "Object": 
    { "Inner":
        {
        "InnerKey": "InnerValue"
        }
    }
}

Ha a beágyazott objektum a konfigurációs példányba leküldett érték, a mélységi érték használatával a megfelelő mélységben állíthatja le a simítást.

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 

A 2 mélység miatt a fenti példa most a következő kulcs-érték párot adja vissza:

Kulcs Érték
Objektum:Belső {"InnerKey":"InnerValue"}

Műveletbemenetek ismertetése

A bemeneti paraméterek határozzák meg a művelet által a futásidőben használt adatokat. Az alábbi táblázat App Configuration Sync által elfogadott bemeneti paramétereket és az egyes értékekhez várt értékeket tartalmazza. A GitHub Actions műveletbemeneteiről a GitHub dokumentációjában talál további információt.

Megjegyzés

A bemeneti azonosítók nem érzékenyek a kis- és nagybetűkre.

Bemeneti név Kötelező? Érték
configurationFile Yes A konfigurációs fájl relatív elérési útja az adattárban. A Glob-minták támogatottak, és több fájlt is tartalmazhatnak.
Formátum Yes A konfigurációs fájl fájlformátuma. Az érvényes formátumok a következők: JSON, YAML, tulajdonságok.
connectionString Yes Olvasási-írási kapcsolati sztring a App Configuration-példányhoz. A kapcsolati sztring titkos kódként kell tárolni a GitHub-adattárban, és csak a titkos név használható a munkafolyamatban.
Elválasztó Yes A konfigurációs fájl kulcs-érték párokra való simításához használt elválasztó. Az érvényes értékek a következők: . , ; : - _ __ /
Előtag No A kulcsok elejéhez hozzáadandó előtag.
címke No Kulcs-érték párok beállításakor használt címke. Ha nincs meghatározva, a rendszer null címkét használ.
Szigorú No Logikai érték, amely meghatározza, hogy engedélyezve van-e a szigorú mód. Az alapértelmezett érték a hamis.
Mélység No A konfigurációs fájl simításának maximális mélysége. A mélységnek pozitív számnak kell lennie. Az alapértelmezett beállítás nem rendelkezik maximális mélységtel.
tags No A kulcs-érték párokon beállított címkekészletet adja meg. A várt formátum egy JSON-objektum sztringezett formája a következő alakzatból: { [propertyName: string]: string; } Minden tulajdonságnév-érték címkévé válik.

Következő lépések

Ebben a cikkben megismerhette a GitHub-művelet szinkronizálása App Configuration, valamint azt, hogyan automatizálható a App Configuration-példány frissítéseinek automatizálása. Ha meg szeretné tudni, hogy Azure App Configuration hogyan reagál a kulcs-érték párok változásaira, folytassa a következő cikkel.