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.


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.