我有一个天蓝色的管道,如下所示的 pipeline.yml 所示。我试图将阶段中设置的变量传递给另一个阶段中的作业,例如参数。问题是它不起作用:
job_template1.yml:
jobs:
- job: A1
steps:
- script: echo ##vso[task.setvariable variable=shouldrun;isOutput=true]true
name: printvar
job_template2.yml:
parameters:
myparam: ''
jobs:
- job: B1
steps:
- script: echo ${{ parameters.myparam }}
管道.yml
stages:
- stage: A
jobs:
- template: job_template1.yml
- stage: B
jobs:
- template: job_template2.yml
parameters:
myparam: $[ stageDependencies.A.A1.outputs['printvar.shouldrun'] ]
最终的回显是:$[ stageDependency.A.A1.outputs['printvar.shouldrun'] ]
知道如何修复它吗?
我什至尝试改变管道:
stages:
- stage: A
jobs:
- job: A1
steps:
- script: echo ##vso[task.setvariable variable=shouldrun;isOutput=true]true
name: printvar
- stage: B
jobs:
- template: job_template2.yml
parameters:
myparam: $[ stageDependencies.A.A1.outputs['printvar.shouldrun'] ]
没有任何运气
我的模板管道中有类似的东西。您忘记添加的内容之一是 dependentOn 标记,并且您没有在脚本周围使用引号 (")。
为了使其正常工作,您需要将在阶段 A 中设置的变量保存在阶段 B 的变量中,如下所示。
这是 1 个文件中的示例代码。但是将它们分成多个模板应该不会导致任何问题。
stages:
- stage: A
jobs:
- job: A1
steps:
- script: echo "##vso[task.setvariable variable=shouldrun;isOutput=true]true"
name: printvar
- stage: B
dependsOn: A
variables:
- name: test
value: $[ stageDependencies.A.A1.outputs['printvar.shouldrun'] ]
jobs:
- job: B1
steps:
- script: echo $(test)
希望这有帮助。