如何在Azure DevOps YAML管道中覆盖库变量值?
Azure DevOps YAML管道中覆盖变量组变量的问题
我在Azure DevOps库中定义了变量组DevGroup:
我尝试在Azure DevOps YAML管道的特定任务中覆盖上述库中定义的变量值,编写的YAML管道脚本如下:
trigger: - none pool: vmImage: ubuntu-latest variables: - group: DevGroup steps: - script: | echo "##vso[task.setvariable variable=VanisJob;isoutput=true]FSDeveloper" echo $(VanisJob) - script: | echo $(VanisJob) is the 2nd Job
执行结果:
第一个脚本任务结果:
第二个脚本任务结果:此处应显示YAML中设置的新值,但实际未变更
请问如何实现该变量值的覆盖?
解决方案
要实现变量组中变量的覆盖,需调整任务变量设置方式并检查变量保护状态:
- 移除
isoutput=true参数
你当前用isoutput=true把变量设置成了任务输出变量,这类变量仅能通过任务引用访问,无法直接覆盖全局管道变量。去掉该参数后,设置的是全局管道级变量,后续任务可直接读取新值。
修改后的YAML脚本:
trigger: - none pool: vmImage: ubuntu-latest variables: - group: DevGroup steps: - script: | echo "##vso[task.setvariable variable=VanisJob]FSDeveloper" echo $(VanisJob) - script: | echo $(VanisJob) is the 2nd Job
- 检查变量保护状态
如果DevGroup中的VanisJob被标记为受保护/机密变量,任务无法覆盖它。需进入Azure DevOps变量组设置,取消该变量的“保持此值机密”或“受保护”勾选,才能允许任务修改。
完成以上调整后,第二个脚本任务即可输出覆盖后的新值FSDeveloper。
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

