我正在考虑将.Net核心WebApi服务部署到Azure,作为部署的一部分,我非常希望用CosmosDb连接字符串更新appsettings.json中的连接字符串。我有一个Azure KeyVault,它将连接字符串作为一个秘密存储在其中。
使用用于CI/CD的YAML构建管道,我的管道中有以下内容(片段)
- task: AzureKeyVault@1
inputs:
azureSubscription: '<service-principal>'
KeyVaultName: '<keyvault-name>'
SecretsFilter: '*'
RunAsPreJob: true
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-principal>'
appType: 'webApp'
WebAppName: '<ci-resource-group>'
VirtualApplication: '/'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
JSONFiles: '**/appsettings.json'这两个任务处于从前一个阶段下载已发布工件的阶段。
因此,任务可以执行JSON转换,但我需要定义一个ConnectionStrings:CosmosDb格式的变量,其中包含存储在密钥库中的秘密值,并且我不确定该如何做!
$(secret)的管道,我如何为AzureRmWebAppDeployment@4任务创建一个变量,如前所述?到目前为止,我发现的所有内容都指向了经典发布管道,并使用了可变组,但这需要成为YAML管道的一部分。
发布于 2020-08-28 09:47:13
跟随文档
若要替换文件嵌套级别中的值,请将名称与句点(.)连接起来。按等级顺序。
但是你的秘密不可能有点点滴滴的名字,所以你必须在这两步之间做一次小小的重写:
- powershell: |
echo "##vso[task.setvariable variable=ConnectionStrings.CosmosDb;]$(ConnectionStrings-CosmosDb)"你的秘密是ConnectionStrings-CosmosDb
https://stackoverflow.com/questions/63630797
复制相似问题