将变量传递给 Azure DevOps Yaml 管道中的非依赖作业
Passing variable to non-dependent jobs in Azure DevOps Yaml Pipelines
我正在尝试将一个变量从一个作业传递到多个非依赖作业。它适用于依赖工作。但是,它不适用于非依赖性工作。我有这样定义的 yaml 管道。
jobs:
- job: JobA
steps:
- task: Bash@3
name: var_test
inputs:
targetType: 'inline'
script: |
myVar=demo-value
echo "##vso[task.setvariable variable=myVarNew;isOutput=true]$myVar"
- job: JobB
dependsOn: JobA
variables:
- name: newVar2
value: $[ dependencies.JobA.outputs['var_test.myVarNew'] ]
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "$(newVar2)"
- job: JobC
dependsOn: JobB
variables:
- name: newVar2
value: $[ dependencies.JobA.outputs['var_test.myVarNew'] ]
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "$(newVar2)"
它在 JobB 中工作正常。但是当我在像 jobC 这样的不同下游工作中尝试它时,它不起作用。此外,我无法在每个作业中设置变量,因为手动验证无代理作业也在两者之间。我想在同一阶段的不同非依赖作业中使用相同的变量。请帮忙。谢谢
dependencies.X.outputs
依赖于已声明为依赖项的 X。如果它不存在,那么 Azure Pipelines 无法真正知道将其作为该作业的一个跟踪(唯一的例外是作业隐式 dependsOn
前面的作业,除非明确设置。
在你的例子中,因为 JobB
依赖于 JobA
而 JobC
依赖于 JobB
,下面是等效的(即使有点多余):
- job: JobC
dependsOn:
- JobA
- JobB
...
对于依赖关系图而言,它是多余的,但它满足了声明依赖关系的需要,以便您可以访问其输出变量。
我正在尝试将一个变量从一个作业传递到多个非依赖作业。它适用于依赖工作。但是,它不适用于非依赖性工作。我有这样定义的 yaml 管道。
jobs:
- job: JobA
steps:
- task: Bash@3
name: var_test
inputs:
targetType: 'inline'
script: |
myVar=demo-value
echo "##vso[task.setvariable variable=myVarNew;isOutput=true]$myVar"
- job: JobB
dependsOn: JobA
variables:
- name: newVar2
value: $[ dependencies.JobA.outputs['var_test.myVarNew'] ]
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "$(newVar2)"
- job: JobC
dependsOn: JobB
variables:
- name: newVar2
value: $[ dependencies.JobA.outputs['var_test.myVarNew'] ]
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "$(newVar2)"
它在 JobB 中工作正常。但是当我在像 jobC 这样的不同下游工作中尝试它时,它不起作用。此外,我无法在每个作业中设置变量,因为手动验证无代理作业也在两者之间。我想在同一阶段的不同非依赖作业中使用相同的变量。请帮忙。谢谢
dependencies.X.outputs
依赖于已声明为依赖项的 X。如果它不存在,那么 Azure Pipelines 无法真正知道将其作为该作业的一个跟踪(唯一的例外是作业隐式 dependsOn
前面的作业,除非明确设置。
在你的例子中,因为 JobB
依赖于 JobA
而 JobC
依赖于 JobB
,下面是等效的(即使有点多余):
- job: JobC
dependsOn:
- JobA
- JobB
...
对于依赖关系图而言,它是多余的,但它满足了声明依赖关系的需要,以便您可以访问其输出变量。