这听起来像是一个非常简单的事情,但我已经在互联网上挖掘了几个小时,但找不到可行的示例。
我想要这样的东西:
- job: A
displayName: jobA
- ${{ if eq(failed(), true) }}:
- template: ./template.yaml
parameters: ...
但它不起作用。我尝试过使用表达式、条件以及中间的作业 B,只是为了将标志传递给表达式 - 仍然不起作用。
如有任何建议,我们将不胜感激。
作业状态检查功能似乎不适用于
if
、elseif
和else
子句。它们可用于管道中每个阶段、每个作业和每个任务的 condition
键。
另外,为了让模板作业能够得到jobA的最终状态,模板作业应该在jobA之后运行。因此,您需要使用模板作业上的 dependsOn
键将模板作业设置为依赖于jobA。
然后在模板作业中,可以使用表达式“
dependencies.A.result
”来获取jobA的状态。此表达式也不适用于 if
、elseif
和 else
子句。
以下为参考范例。
# template.yaml
parameters:
- name: dependsOnJob
type: string
- name: jobCondition
type: string
jobs:
- job: TB
displayName: jobTemplate
dependsOn: ${{ parameters.dependsOnJob }}
condition: ${{ parameters.jobCondition }}
steps:
. . .
# azure-pipelines.yml
stages:
- stage: S1
jobs:
- job: A
displayName: jobA
steps:
. . .
- template: template.yaml
parameters:
dependsOnJob: A
jobCondition: eq(dependencies.A.result, 'failed')