使用模板在天蓝色管道中跨阶段共享变量

问题描述 投票:0回答:1

我有一个天蓝色的管道,如下所示的 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'] ]

没有任何运气

azure-devops azure-pipelines azure-pipelines-yaml
1个回答
0
投票

我的模板管道中有类似的东西。您忘记添加的内容之一是 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)

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.