Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure开发运营多阶段YAML管道-使用前一阶段状态作为变量_Azure_Azure Devops_Azure Pipelines - Fatal编程技术网

Azure开发运营多阶段YAML管道-使用前一阶段状态作为变量

Azure开发运营多阶段YAML管道-使用前一阶段状态作为变量,azure,azure-devops,azure-pipelines,Azure,Azure Devops,Azure Pipelines,我希望通过变量将多阶段管道中前一阶段的结果提供给我 我知道可以使用dependencies对象通过dependency对象访问前一阶段的结果(请参阅) 例如,如果我有一个名为“deploy”的前一个阶段,那么我将能够作为另一个阶段的条件访问结果,如: condition:in(dependencies.deploy.result,'Skipped') 这完全符合预期,但是,我希望在条件之外使用此变量,即在bash任务中回显阶段结果,或将其添加到工作项描述中 然而,这在条件之外似乎是不可能的。如果

我希望通过变量将多阶段管道中前一阶段的结果提供给我

我知道可以使用dependencies对象通过dependency对象访问前一阶段的结果(请参阅)

例如,如果我有一个名为“deploy”的前一个阶段,那么我将能够作为另一个阶段的条件访问结果,如:
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)

好的,这也是我所期待的,谢谢你的确认。我最终使用了一个额外的任务来导出阶段结果。它很管用,我只是不太喜欢它。无论如何,非常感谢!