Azure开发运营多阶段YAML管道-使用前一阶段状态作为变量
我希望通过变量将多阶段管道中前一阶段的结果提供给我 我知道可以使用dependencies对象通过dependency对象访问前一阶段的结果(请参阅) 例如,如果我有一个名为“deploy”的前一个阶段,那么我将能够作为另一个阶段的条件访问结果,如:Azure开发运营多阶段YAML管道-使用前一阶段状态作为变量,azure,azure-devops,azure-pipelines,Azure,Azure Devops,Azure Pipelines,我希望通过变量将多阶段管道中前一阶段的结果提供给我 我知道可以使用dependencies对象通过dependency对象访问前一阶段的结果(请参阅) 例如,如果我有一个名为“deploy”的前一个阶段,那么我将能够作为另一个阶段的条件访问结果,如: condition:in(dependencies.deploy.result,'Skipped') 这完全符合预期,但是,我希望在条件之外使用此变量,即在bash任务中回显阶段结果,或将其添加到工作项描述中 然而,这在条件之外似乎是不可能的。如果
condition:in(dependencies.deploy.result,'Skipped')
这完全符合预期,但是,我希望在条件
之外使用此变量,即在bash任务中回显阶段结果,或将其添加到工作项描述中
然而,这在条件之外似乎是不可能的。如果我想将结果用作变量,或者对于使用结果作为条件的If查询,它似乎不起作用。例如,以下代码块、testString和另一个testString最终为空字符串:
- stage: afterDeploy
dependsOn:
- deploy
condition: in(dependencies.deploy.result, 'Skipped')
variables:
testString: $[dependencies.deploy.result]
${{ if in(dependencies.deploy.result, 'Skipped') }}:
anotherTestString: "Skipped"
我还尝试使用不同的方式访问变量,即${{{dependencies.deploy.result}}
,$(dependencies.deploy.result)
,或者使用stageDependency代替dependency(stageDependencies.deploy.result
)
有没有一种很好的方法可以直接访问前一阶段的结果,或者我必须通过?或者,我可以添加一个额外的任务,将状态结果导出为一个新变量。这两种解决方案对我来说都不是最优的,因为阶段结果在技术上可以通过dependency对象获得…在我这边测试,我可以看到相同的结果,似乎目前我们无法设置变量来使用关键字
dependencies.deploy.result
打印阶段结果。一种解决方法是使用API:,有关详细信息,请参阅
stages:
- stage: A
jobs:
- job: A1
steps:
- bash: echo "##vso[task.setvariable variable=myStageOutputVar;isOutput=true]this is a stage output var"
name: printvar
- stage: B
dependsOn: A
variables:
myVarfromStageA: $[ stageDependencies.A.A1.outputs['printvar.myStageOutputVar'] ]
jobs:
- job: B1
steps:
- script: echo $(myVarfromStageA)
或者,您可以添加一个额外的任务,将状态结果导出为新的输出变量。有关详细信息,请参阅
stages:
- stage: A
jobs:
- job: A1
steps:
- bash: echo "##vso[task.setvariable variable=myStageOutputVar;isOutput=true]this is a stage output var"
name: printvar
- stage: B
dependsOn: A
variables:
myVarfromStageA: $[ stageDependencies.A.A1.outputs['printvar.myStageOutputVar'] ]
jobs:
- job: B1
steps:
- script: echo $(myVarfromStageA)
好的,这也是我所期待的,谢谢你的确认。我最终使用了一个额外的任务来导出阶段结果。它很管用,我只是不太喜欢它。无论如何,非常感谢!