如何知道 Azure DevOps build Pipe line 中上一步的结果?

How to know the previous step result in Azure DevOps build Pipe line?

我想知道是否有任何方法可以知道在 azure dev ops 的构建管道中执行上一步的结果。

详细解释我的查询: 可以说在 azure Devops 中我有一个包含大约 10 个步骤的构建管道,它执行一些任务,比如准备构建、构建解决方案、同步和其他一些事情。

现在我想知道某个步骤执行的状态是失败还是成功:

  1. 第 1 步:成功
  2. 第 2 步:成功
  3. 第 3 步:失败
  4. STEP 4: 我想知道STEP 3执行的状态是失败还是 成功基于我要执行步骤 4
  5. 第 5 步:应该像第 4 步一样执行 i.e.based 步骤执行结果 第 3 步
  6. 第 6 步:应该执行
  7. 第 7 步:应该执行

以此类推直到第 10 步..

我的问题是如何实现?如何根据上一步的执行结果,让少数步骤的执行不执行,剩下的应该执行。

请注意,我曾尝试仅在所有先前的任务都成功时才执行,但它仍然不起作用。它仍然执行步骤 4 和 5。

另请注意,STEP 7 有一些与之关联的自定义条件,可以正常工作。提供此说明只是为了提供更多关于如何定义或创建构建管道任务的上下文。

请帮我解决这个问题或实现这种行为。

如果前面的步骤失败failed()(至少前面的步骤之一),你可以自定义条件只执行第 3 步和第 4 步,但之后的所有其他步骤都将被跳过(如果他们期望成功的所有步骤)或将全部执行(如果将它们设置为 succeededOrFailed().

你在这个决定中不能真正充满活力。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

您也许可以在没有阶段和工作的情况下完成您想要的事情,但我认为您描述的案例是您管道中 multiple Jobs 的一个很好的候选者。这是一个遵循问题逻辑的示例 yaml 管道。 dependsOn:condition: 的组合将帮助您在管道中构建这些类型的依赖关系图。

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

jobs:
- job: Foo 
  displayName: (Steps 1-2)
  steps:
  - script: echo Hello, world!
    displayName: Number 1

  - script: echo Hello, world!
    displayName: Number 2

- job: Bar 
  displayName: (Step 3)
  dependsOn: Foo
  steps:
  - script: 0[=10=]
    displayName: Number 3

- job: Qux 
  displayName: (Step 4-5)
  dependsOn: Bar
  condition: failed()
  steps:
  - script: echo Hello, world!
    displayName: Number 4

  - script: echo Hello, world!
    displayName: Number 5

- job: baz
  displayName: (Step 6+)
  dependsOn: Qux
  condition: always()
  steps:
  - script: echo Hello, world!
    displayName: Number 6

  - script: echo Hello, world!
    displayName: Number 7

failed flow success flow