【发布时间】:2019-07-03 12:33:12
【问题描述】:
在发布管道的 Devops 中,我正在配置变量(要为 Dev 部署的资源的名称,preprod 阶段)。因此在覆盖模板参数下,我指定 -accountName $(accountName) 但变量中提到的名称(对于 Dev,preprod)不被接受,而是从模板参数 json 中获取值。请提出解决方案。
【问题讨论】:
标签: azure-devops azure-pipelines
在发布管道的 Devops 中,我正在配置变量(要为 Dev 部署的资源的名称,preprod 阶段)。因此在覆盖模板参数下,我指定 -accountName $(accountName) 但变量中提到的名称(对于 Dev,preprod)不被接受,而是从模板参数 json 中获取值。请提出解决方案。
【问题讨论】:
标签: azure-devops azure-pipelines
您可以尝试在管道中使用${{ variables.accountName}} 而不是$(accountName) 将参数传递给模板。您可以将变量 system.debug 设置为 true 以检查管道的完整日志。在 InitializePipeline 的最后一部分中,您可以看到生成的 yaml 的外观。似乎${{ }} 在处理模板等期间被评估,但$() 稍后被评估。
【讨论】:
我也有类似的问题,但解决方案略有不同。
我的示例 azure-pipelines.yml 没有在模板中覆盖 flag 参数。
parameters:
- name: var1
type: string
- name: var2
type: string
- name: bool1
type: bool
...
omitted
...
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: ''
subscriptionId: ''
action: 'Create Or Update Resource Group'
resourceGroupName: rg-${{parameters.var1}}-${{parameters.var2}}
location: ''
templateLocation: 'Linked artifact'
csmFile: $(System.DefaultWorkingDirectory)/arm.json
csmParametersFile: $(System.DefaultWorkingDirectory)/arm.parameters.json
deploymentMode: 'Incremental'
overrideParameters: >-
-string1 ${{parameters.var1}}
-string2 ${{parameters.var2}}
-flag ${{parameters.bool1}}
问题在于我的 overrideParameters 块样式。
我使用的是>-,它在最后删除了所有换行符,但> 可以在最后添加一个换行符。了解更多here。
【讨论】: