在发布管道的Devops中,我正在配置变量(将为Dev部署的资源的名称,预生产阶段)。因此,在覆盖模板参数下,我指定了-accountName $ {accountName),但是名称如变量中所述(对于Dev,则为preprod)(不接受),而是从模板参数json中获取值。请提出解决方案。
答案 0 :(得分:0)
您可以尝试在管道中使用$ {{variables.accountName}}代替$(accountName)来将参数传递给模板。您可以将varaible system.debug设置为true,以检查管道的完整日志。在InitializePipeline的最后一部分中,您可以查看生成的Yaml的外观。似乎$ {{}}是在处理模板等过程中评估的,而$()是稍后评估的。
答案 1 :(得分:0)
我也遇到了类似的问题,但解决方案略有不同。
我的示例 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。