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.
Göndermeden sonra yapılandırma dosyalarını eşitleme
Bu eylem, öğesine bir değişiklik gönderildiğinde appsettings.json
Azure Uygulama Yapılandırması dosyaları eşitler. Bir geliştirici için appsettings.json
bir 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.