Share via


GitHub deponuzu Uygulama Yapılandırması ile eşitleme

Mevcut kaynak denetimi uygulamalarını kullanmaya devam etmek isteyen ekipler, GitHub depolarını Uygulama Yapılandırması depolarıyla otomatik olarak eşitlemek için GitHub Actions kullanabilir. Bu, yapılandırma dosyalarınızda normalde yaptığınız gibi değişiklikler yapmanıza olanak tanırken aşağıdaki gibi Uygulama Yapılandırması avantajlar elde etmenizi sağlar:
    • Kodunuzun dışında merkezi yapılandırma
    • Uygulamanızın tamamını yeniden dağıtmadan yapılandırmayı güncelleştirme
    • Azure App Service ve İşlevler gibi hizmetlerle tümleştirme.

GitHub Actions iş akışı, GitHub deposunda otomatik bir işlemi tanımlar. Azure Uygulama Yapılandırması Eşitleme Eylemi, kaynak depoda değişiklik yapıldığında bir Uygulama Yapılandırması örneğine yapılan güncelleştirmeleri tetikler. Adımları ve parametreleri tanımlamak için deponuzun yolunda bulunan /.github/workflows/ bir YAML (.yml) dosyası kullanır. Uygulama yapılandırma dosyalarını gönderme, gözden geçirme veya dallanma sırasında aynı uygulama kodunda olduğu gibi yapılandırma güncelleştirmelerini tetikleyebilirsiniz.

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

Deponuzda GitHub Actions etkinleştirme

Bu GitHub Eylemini kullanmaya başlamak için deponuza gidin ve Eylemler sekmesini seçin. Yeni iş akışı'nın ardından İş akışını kendiniz ayarlayın'ı seçin. Son olarak markette "Azure Uygulama Yapılandırması Eşitleme" araması yapın.

Eylem sekmesini seçin

Uygulama yapılandırması eşitleme Eylemini seçin

Göndermeden sonra yapılandırma dosyalarını eşitleme

Bu eylem, öğesine bir değişiklik gönderildiğinde appsettings.jsonAzure Uygulama Yapılandırması dosyaları eşitler. Bir geliştirici için appsettings.jsonbir değişiklik gönderildiğinde, Uygulama Yapılandırması Eşitleme eylemi Uygulama Yapılandırması örneğini yeni değerlerle güncelleştirir.

Bu iş akışının ilk bölümü, eylemin ana dala içeren appsettings.json bir gönderimde tetiklendiğini belirtir. İkinci bölümde, eylem tetiklendiğinde çalıştırılacak işler listelenir. Eylem, depoda gizli dizi olarak depolanan bağlantı dizesini kullanarak ilgili dosyaları denetler ve Uygulama Yapılandırması örneğini güncelleştirir. GitHub'da gizli dizileri kullanma hakkında daha fazla bilgi için GitHub'ın şifrelenmiş gizli dizi oluşturma ve kullanma hakkındaki makalesine 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: ':' 

Katı eşitleme kullanma

Varsayılan olarak GitHub Eylemi katı modu etkinleştirmez, yani eşitlemenin yapılandırma dosyasından Uygulama Yapılandırması örneğine yalnızca anahtar-değer değerleri ekleyeceği anlamına gelir (anahtar-değer çiftleri silinmez). Katı modun etkinleştirilmesi, yapılandırma dosyasında yer almamış anahtar-değer çiftlerinin Uygulama Yapılandırması örneğinden silindiği ve böylece yapılandırma dosyasıyla eşleşeceği anlamına gelir. Birden çok kaynaktan eşitleme gerçekleştiriyorsanız veya Azure Key Vault'ı Uygulama Yapılandırması ile kullanıyorsanız, diğer dosyalardan yapılandırma ayarlarının silinmesini önlemek için katı eşitleme ile farklı ön ekler veya etiketler kullanmak istersiniz (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 

Tek bir eylemde birden çok dosyayı eşitleme

Yapılandırmanız birden çok dosyadaysa, iki dosyadan biri değiştirildiğinde eşitlemeyi tetikleme amacıyla aşağıdaki deseni kullanabilirsiniz. Bu desen glob kitaplığını https://www.npmjs.com/package/glob kullanır. Yapılandırma dosya adınız virgül içeriyorsa, virgülden kaçmak için 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şitleme

Eşitleme eyleminizde ön ekleri veya etiketleri belirtmek yalnızca belirli bir kümeyi eşitler. Bu, birden çok dosyayla katı eşitleme kullanmak için önemlidir. Yapılandırmanın nasıl ayarlandıklarına bağlı olarak, her dosyayla bir ön ek veya etiket ilişkilendirilebilir ve ardından her ön ek veya etiket ayrı olarak eşitlenebilir, böylece hiçbir şeyin üzerine yazılmaz. Ön ekler genellikle farklı uygulamalar veya hizmetler için, etiketler ise 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şitlemede dinamik etiket kullanma

Aşağıdaki eylem her eşitlemeye dinamik bir etiket ekleyerek her eşitlemenin benzersiz olarak tanımlanabilmesini sağlar ve kod değişikliklerinin yapılandırma değişiklikleriyle eşlenmesine izin verir.

Bu iş akışının ilk bölümü, eylemin ana dala içeren appsettings.json bir gönderimde tetiklendiğini belirtir. İkinci bölüm, işleme karması temelinde yapılandırma güncelleştirmesi için benzersiz bir etiket oluşturan bir iş çalıştırır. İş daha sonra Uygulama Yapılandırması örneğini yeni değerlerle ve bu güncelleştirmenin benzersiz etiketiyle 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 Action ile Azure Key Vault kullanma

AppConfiguration ile Azure Key Vault kullanan geliştiriciler genellikle appsettings.json ve secretreferences.json olmak üzere iki ayrı dosya kullanmalıdır. secretreferences.json, anahtar kasası gizli dizisinin URL'sini içerir.

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

GitHub Eylemi daha sonra appsettings.json üzerinde katı bir eşitleme ve ardından secretreferences.json üzerinde katı olmayan bir eşitleme yapacak şekilde yapılandırılabilir. Aşağıdaki örnek, dosyalardan biri güncelleştirildiğinde eşitlemeyi tetikler:

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 Action'ı sınırlamak için maksimum derinlik kullanma

İç içe JSON öznitelikleri için varsayılan davranış, nesnenin tamamını düzleştirmedir. Aşağıdaki JSON şu anahtar-değer çiftini tanımlar:

Anahtar Değer
Object:Inner:InnerKey InnerValue
{ "Object": 
    { "Inner":
        {
        "InnerKey": "InnerValue"
        }
    }
}

İç içe nesnenin Yapılandırma örneğine gönderilen değer olması amaçlanıyorsa, uygun 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 göz önünde bulundurulduğunda yukarıdaki örnek şimdi aşağıdaki anahtar-değer çiftini döndürür:

Anahtar Değer
Nesne:İç {"InnerKey":"InnerValue"}

Eylem girişlerini anlama

Giriş parametreleri, çalışma zamanı sırasında eylem tarafından kullanılan verileri belirtir. Aşağıdaki tabloda, Uygulama Yapılandırması Sync tarafından kabul edilen giriş parametreleri ve her biri için beklenen değerler yer alır. GitHub Actions eylem girişleri hakkında daha fazla bilgi için GitHub belgelerine bakın.

Not

Giriş kimlikleri büyük/küçük harfe duyarlı değildir.

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.
Connectionstring Yes Uygulama Yapılandırması örneği için okuma-yazma bağlantı dizesi. Bağlantı dizesi GitHub deposunda gizli dizi olarak depolanmalı ve iş akışında yalnızca gizli dizi adı kullanılmalıdır.
Ayırıcı Yes Yapılandırma dosyası anahtar-değer çiftlerine düzleştirme sırasında kullanılan ayırıcı. Geçerli değerler şunlardır: . , ; : - _ __ /
Önek Hayır Anahtarların başına eklenecek ön ek.
etiket Hayır Anahtar-değer çiftleri ayarlanırken kullanılan etiket. Belirtilmemişse, null etiket kullanılır.
Sıkı Hayır Katı modun etkinleştirilip etkinleştirilmediğini belirleyen boole değeri. Varsayılan değer false'tur.
Derinlik Hayır Yapılandırma dosyasını düzleştirmeye yönelik maksimum derinlik. Derinlik pozitif bir sayı olmalıdır. Varsayılan değerde maksimum derinlik olmaz.
etiketler Hayır Anahtar-değer çiftlerinde ayarlanan etiketi belirtir. Beklenen biçim, şu şekildeki JSON nesnesinin dizeli bir biçimidir: { [propertyName: string]: string; } Her özellik adı-değeri bir etikete dönüşür.

Sonraki adımlar

Bu makalede, github eylemini eşitleme Uygulama Yapılandırması ve bunun Uygulama Yapılandırması örneğinizdeki güncelleştirmeleri otomatikleştirmek için nasıl kullanılabileceğini öğrendiniz. Azure Uygulama Yapılandırması anahtar-değer çiftlerindeki değişikliklere nasıl tepki olduğunu öğrenmek için sonraki makaleye geçin.