![](/img/trans.png)
[英]Deploy Appsettings for Azure function app using Azure Devops and Yaml and Variable group
[英]Azure DevOps CI/CD Deploy Web or Function App changing the values in appsettings in YAML Pipelines
最近在我們的一些部署中,關於如何自動化 Function 應用程序和 Web 應用程序的應用程序設置在內部存在一些混亂,並且檢查那里似乎有大量令人眼花繚亂的選項,看起來他們在做大致相同的事情,但在不同的地方腳步。
我們的開發人員通常有一個 appsettings.json 文件,他們提交給他們的測試可能看起來像這樣的 repo...
{
"Logging": {
"LogLevel": {
"Default": "Information",
}
},
"Values": {
"ThingToPointTo": "http://localhost",
}
}
當我們將其帶到其他環境(例如 PROD)時,我們將ThingToPointTo更改為“https://productionservice”
我們一直在使用 Azure DevOps YAML 管道以這種方式部署和更改 AppSettings...
- task: AzureFunctionApp@1
inputs:
azureSubscription: 'OurAzureSubServiceConnection'
appType: functionApp
appName: $(azfuncappname)
package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
AppSettings: '-Values:ThingToPointTo "https://productionservice"'
我的問題是2倍
Values:ThingToPointTo是否正確枚舉到正確的設置,還是應該只是ThingToPointTo (省略Values: )?
這是這樣做的方法嗎? 我注意到有 JSON 轉換步驟可用於在部署之前更改實際文件,還有一個名為“Azure App Service Settings”的任務可以在部署后使用?
有很多關於這個主題的文章,但似乎沒有一個適合。
提前致謝!
Values:ThingToPointTo 是否正確枚舉到正確的設置,還是應該只是 ThingToPointTo(省略 Values:)?
ThingToPointTo :https://productionservice
可能是正確的格式。 您不需要添加values
。
例如:
- task: AzureFunctionApp@1
displayName: 'Azure Function App Deploy: kevin0806'
inputs:
azureSubscription: '7.28-8.28'
appType: functionApp
appName: kevin
appSettings: '-ThingToPointTo http://localhost'
結果:
這是這樣做的方法嗎? 我注意到有 JSON 轉換步驟可用於在部署之前更改實際文件,還有一個名為“Azure App Service Settings”的任務可以在部署后使用?
Azure App Service Settings用於在部署后更改設置。
這是模板,您可以參考:
steps:
- task: AzureRmWebAppDeployment@4
....
- task: AzureAppServiceSettings@1
displayName: 'Azure App Service Settings: kevin0608'
inputs:
azureSubscription: '7.28-8.28'
appName: kevin0608
resourceGroupName: Kevintest
appSettings: |
[
{
"name": "ThingToPointTo",
"value": "valueabcd",
"slotSetting": false
}
]
這是一個關於Json Transform的文檔,您也可以參考它。
此外,您可以查看這張票:
來自 appsettings.json 的設置不會顯示在 Azure 應用服務配置中,但 > 在那里定義的設置會覆蓋 appsettings.json 中的值
任務中的 appsettings 配置可以顯示在 azure 應用服務配置中,它可以覆蓋 appsettings.json 中的值。
更新:
以上是沒有嵌套變量的情況。
如果變量是嵌套值,可以遵循以下結構:
"first" : {
"second": {
"third" : "value"
}
}
-first.second.third value1
如果您的應用服務是 linux,您可以使用__
替換.
例如- first__second__third value1
注意:變量名匹配區分大小寫
感謝@Kevin Lu-MSFT 與我討論這些選項
我們發現對於具有嵌套值的 webapps...例如
{
"Logging": {
"LogLevel": {
"Default": "Information",
}
},
"MySettings": {
"ThingToPointTo": "http://localhost",
}
}
... AZDO YAML 管道中的 AppSettings 確實是...
- task: AzureFunctionApp@1
inputs:
azureSubscription: 'OurAzureSubServiceConnection'
appType: functionApp
appName: $(azfuncappname)
package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
AppSettings: '-MySettings:ThingToPointTo "https://productionservice"'
這似乎與 FUNCTION 應用程序不同!
如果您在 JSON 中有“值”,則不要使用 Values: 來枚舉...!...
例如...
{
"Values": {
"ThingToPointTo": "http://localhost",
}
}
...最終成為...
AppSettings: '-ThingToPointTo "https://productionservice"'
Function Apps 似乎存在雙重標准。 所以請注意(其中大部分是使用 .Net 核心和 Windows 設置完成的(如果適用於 Azure)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.