GitHub deponuzu uygulama yapılandırmasıyla eşitleyin

Mevcut kaynak denetimi uygulamalarını kullanmaya devam etmek isteyen takımlar, GitHub deposunu uygulama yapılandırma depolarıyla otomatik olarak eşitlemek için GitHub eylemlerini kullanabilir. Bu, aşağıdaki gibi uygulama yapılandırma avantajlarını alırken yapılandırma dosyalarınızda değişiklik yapmanıza olanak sağlar:
    • Kodunuzun dışında merkezi yapılandırma
    • Tüm uygulamanızı yeniden dağıtmaya gerek kalmadan yapılandırmayı güncelleştirme
    • Azure App Service ve Işlevleri gibi hizmetlerle tümleştirme.

GitHub eylemleri iş akışı , GitHub deposunda otomatikleştirilmiş bir işlem tanımlar. Azure uygulama yapılandırma eşitleme eylemi, kaynak deposunda değişiklik yapıldığında bir uygulama yapılandırma örneği için güncelleştirmeleri tetikler. /.github/workflows/Adımları ve parametreleri tanımlamak üzere deponuzun yolunda bulunan BIR YAML (. yıml) dosyasını kullanır. Uygulama kodu ile tıpkı uygulama yapılandırma dosyalarını gönderdiğinizde, gözden geçirirken veya dallandırdığınızda yapılandırma güncelleştirmelerini tetikleyebilirsiniz.

GitHub belgeleri , GitHub iş akışlarının ve eylemlerinin ayrıntılı görünümünü sağlar.

Deponuzda GitHub eylemlerini etkinleştirme

Bu GitHub eylemini kullanmaya başlamak için deponuza gidin ve Eylemler sekmesini seçin. Yeni iş akışı' nı seçin ve ardından bir Iş akışını kendiniz ayarlayın. Son olarak, Market 'te "Azure uygulama yapılandırma eşitlemesi" için arama yapın.

Eylem sekmesini seçin

Uygulama yapılandırma eşitleme eylemini seçin

Bir gönderim sonrasında yapılandırma dosyalarını eşitleme

Bu eylem, bir değişikliğin gönderildiği Azure uygulama yapılandırma dosyalarını eşitler appsettings.json . Bir geliştirici bir değişikliği uygulamasına ilettiğinde appsettings.json , uygulama yapılandırma eşitleme eylemi, uygulama yapılandırma örneğini yeni değerlerle güncelleştirir.

Bu iş akışının ilk bölümü, eylemin appsettings.json ana dala sahip bir gönderim üzerinde tetikleyeceğini belirtir. İkinci bölüm, eylem tetiklendiğinde çalıştırılan işleri listeler. Eylem ilgili dosyaları denetler ve depoda gizli dizi olarak depolanan bağlantı dizesini kullanarak uygulama yapılandırma örneğini güncelleştirir. GitHub 'da gizli dizileri kullanma hakkında daha fazla bilgi için bkz. GitHub 'ın şifrelenmiş gizli dizileri oluşturma ve kullanma hakkında daha fazla bilgi

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

Katı eşitleme kullan

Varsayılan olarak, GitHub eylemi katı modu etkinleştirmez, yani eşitlemenin yalnızca yapılandırma dosyasından uygulama yapılandırma örneğine anahtar değerleri eklemesi gerekir (anahtar-değer çiftleri silinmez). Katı modu etkinleştirmek, yapılandırma dosyası ile eşleşmesi için uygulama yapılandırma örneğinden silinmeyen anahtar-değer çiftleri anlamına gelir. Birden çok kaynaktan eşitleme yapıyorsanız veya uygulama yapılandırmasıyla Azure Key Vault kullanıyorsanız, diğer dosyalardan yapılandırma ayarlarını silme işleminin önüne geçmek için, katı eşitleme ile farklı ön ekleri veya etiketleri kullanmak isteyeceksiniz (aşağıdaki örneklere bakın).

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 

Birden çok dosyayı tek bir eylemde eşitleme

Yapılandırmanız birden çok dosya içinde ise, herhangi bir dosya değiştirildiğinde eşitleme tetiklemek için aşağıdaki kalıbı kullanabilirsiniz. Bu model, glob kitaplığını kullanır https://www.npmjs.com/package/glob . Yapılandırma dosyanızın adı virgül içeriyorsa, virgülden çıkmak için bir ters eğik çizgi kullanabileceğinizi unutmayın.

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

Ön eke veya etikete göre Eşitle

Eşitleme eyleinizde ön ekleri veya etiketleri belirtmek yalnızca belirli bir kümeyi eşitler. Bu, birden çok dosya ile katı eşitlemenin kullanılması için önemlidir. Yapılandırmanın nasıl ayarlandığına bağlı olarak, her bir dosya ile bir ön ek veya etiket ilişkilendirilebilir ve ardından hiçbir şeyin üzerine yazılmaması için her önek veya etiket ayrı olarak eşitlenebilir. Genellikle ön ekler farklı uygulamalar veya hizmetler için kullanılır ve Etiketler farklı ortamlar için kullanılır.

Ön eke göre Eşitle:

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

Etikete göre Eşitle:

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'

Eşitleme sırasında dinamik etiket kullan

Aşağıdaki eylem her eşitlemede dinamik bir etiket ekler ve böylece her bir eşitleme benzersiz şekilde tanımlanabilir ve kod değişikliklerinin yapılandırma değişikliklerine eşlenmesine izin verebilir.

Bu iş akışının ilk bölümü, eylemin appsettings.json ana dala sahip bir gönderim üzerinde tetikleyeceğini belirtir. İkinci bölüm, işleme karmasını temel alan yapılandırma güncelleştirmesi için benzersiz bir etiket oluşturan bir işi çalıştırır. Ardından iş, bu güncelleştirme için yeni değerlerle ve benzersiz etiketle birlikte uygulama yapılandırma örneğini güncelleştirir.

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

GitHub eylemiyle Azure Key Vault kullanma

AppConfiguration ile Azure Key Vault kullanan geliştiricilerin, genellikle üzerinde bir appsettings.jsve üzerinde bir secretreferences.jsolmak üzere iki ayrı dosya kullanması gerekir. secretreferences.js, Anahtar Kasası parolasının URL 'sini içerir.

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

GitHub eylemi daha sonra, üzerinde appsettings.jskatı bir eşitleme yapmak için yapılandırılabilir ve secretreferences.jsaçık olmayan bir eşitlemeden sonra. Aşağıdaki örnek, herhangi bir dosya güncelleştirildiği zaman bir eşitleme tetikleyecektir:

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'

GitHub eylemini sınırlandırmak için maksimum derinliği kullanın

İç içe geçmiş JSON özniteliklerinin varsayılan davranışı nesnenin tamamını düzleştirebilir. Aşağıdaki JSON bu anahtar-değer çiftini tanımlar:

Anahtar Değer
Nesne: Iç: ınnerkey Innervalue
{ "Object": 
    { "Inner":
        {
        "InnerKey": "InnerValue"
        }
    }
}

İç içe yerleştirilmiş nesnenin yapılandırma örneğine itilmiş olması amaçlanıyorsa, doğru derinlikte düzleştirmeyi durdurmak için derinlik değerini kullanabilirsiniz.

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 

2 derinliği verildiğinde, yukarıdaki örnek şu anahtar-değer çiftini döndürür:

Anahtar Değer
Nesne: Iç {"Innerkey": "ınnervalue"}

Eylem girişlerini anlama

Giriş parametreleri, çalışma zamanı sırasında eylem tarafından kullanılan verileri belirtir. Aşağıdaki tablo, uygulama yapılandırma eşitlemesi tarafından kabul edilen giriş parametrelerini ve her biri için beklenen değerleri içerir. GitHub eylemlerine yönelik eylem girişleri hakkında daha fazla bilgi için bkz. GitHub 'ın belgeleri.

Not

Giriş kimlikleri büyük/küçük harfe duyarlıdır.

Giriş adı Gerekli mi? Değer
configurationFile Yes Depodaki yapılandırma dosyasının göreli yolu. Glob desenleri desteklenir ve birden çok dosya içerebilir.
biçim Yes Yapılandırma dosyasının dosya biçimi. Geçerli biçimler şunlardır: JSON, YAML, Özellikler.
Dizisi Yes Uygulama yapılandırma örneği için bağlantı dizesi. Bağlantı dizesi GitHub deposunda bir gizli dizi olarak depolanmalıdır ve yalnızca gizli ad iş akışında kullanılmalıdır.
ayırıcı Yes Yapılandırma dosyası anahtar-değer çiftlerine düzleştirilmesi sırasında kullanılan ayırıcı. Geçerli değerler:. , ; : - _ __ /
koy No Anahtarların başlangıcına eklenecek ön ek.
etiket No Anahtar-değer çiftleri ayarlanırken kullanılan etiket. Belirtilmemişse, null bir etiket kullanılır.
sert No Katı modunun etkin olup olmadığını belirleyen bir Boole değeri. Varsayılan değer false'tur.
derinliğini No Yapılandırma dosyasını düzleştirme için en yüksek derinlik. Derinlik pozitif bir sayı olmalıdır. Varsayılan değer en fazla derinliğe sahip olmayacaktır.
etiketler No Anahtar-değer çiftleri üzerinde ayarlanan etiketi belirtir. Beklenen biçim, şu şekildeki bir JSON nesnesinin strıngıingform biçimidir: {[propertyName: String]: dize;} Her özellik adı-değeri bir etiket haline gelir.

Sonraki adımlar

Bu makalede, uygulama yapılandırma eşitlemesi GitHub eylemi ve uygulama yapılandırma örneğiniz için güncelleştirmeleri otomatikleştirmek üzere nasıl kullanılabileceği hakkında bilgi edindiniz. Azure Uygulama yapılandırması 'nın anahtar-değer çiftlerinde değişikliklere nasıl tepki verdiğini öğrenmek için sonraki makaleyegeçin.