如何有条件地使用管道变量运行构建代理作业?

时间:2018-12-18 22:07:27

标签: azure-devops

在Azure DevOps管道中,有一个选项可基于管道变量有条件地运行任务。这是在运行此任务> 自定义条件字段中处理的,它使用以下语法:

eq(variables['VarName'], 'Desired Value')

代理作业运行此作业> 使用变量表达式的自定义条件下具有类似的条件执行条件。

但是,当我使用与条件任务相同的语法时,结果总是评估为'false'

那我该如何有条件地运行代理作业

屏幕截图:

enter image description here enter image description here enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

我找到了答案。不幸的是,不可能有条件地使用在构建执行过程中修改过的变量来运行代理作业。

From the Azure DevOps Pipeline documentation under Pipeline Variables:

  

要从脚本定义或修改变量,请使用task.setvariable   记录命令。 请注意,更新后的变量值的范围为   正在执行的作业,并且不会跨作业或阶段流过

答案 1 :(得分:0)

类似的事情对我有用:

- job: Job1
  steps:
  - powershell: |
      if (some condition)
      {
          Write-Host ("##vso[task.setvariable variable=RunJob2;isOutput=true]True")
      }

    name: ScriptStep
- job: Job2
  dependsOn: Create_Build_Matrix
  condition: and(succeeded(), eq(dependencies.Job1.outputs['ScriptStep.RunJob2'], 'True'))

答案 2 :(得分:0)

尝试以下方法:https://stefanstranger.github.io/2019/06/26/PassingVariablesfromStagetoStage/

该变量可让您在相同发布管道中将变量从一个阶段/作业传递到另一阶段/作业。我试过了,一切正常。

要运行此命令,您还需要授予发布管道一些权限。为了在发布期间更新发布定义,您需要为Project Collection Build Service配置发布许可管理发布。