Azure DevOps构建管道中如何获取前一步骤的结果?

8
我想知道在Azure DevOps的构建管道中,是否有办法知道之前步骤执行的结果。
具体来说,我在Azure DevOps中创建了一个构建管道,其中包含约10个步骤,执行一些任务,如准备构建、构建解决方案、同步等等。
现在我想了解某些步骤执行状态的情况,无论是失败还是成功。例如:
  1. 步骤1:成功
  2. 步骤2:成功
  3. 步骤3:失败
  4. 步骤4:我想知道步骤3的执行状态(成功或失败),基于此结果再执行步骤4
  5. 步骤5:应该执行,类似于步骤4,即根据步骤3的执行结果
  6. 步骤6:应该执行
  7. 步骤7:应该执行
从步骤10一直往下执行。
我的问题是如何实现这一点?如何使某些步骤不基于先前的步骤执行结果而不执行,并且其他步骤应该执行。
请注意,我尝试过像“仅在所有先前任务都成功完成后执行”这样的设置,但仍然会执行步骤4和5。
另请注意,步骤7与某些自定义条件相关联,其可以正常工作。这段说明只是为了提供更多上下文信息,说明如何定义或创建我的构建管道任务。
请帮助我解决这个问题或实现这种行为。

这个回答解决了你的问题吗?VSTS - 是否有一种方法只在特定任务失败时运行任务? - Shayki Abramczyk
2个回答

4

您可能可以在不使用Stages和Jobs的情况下完成您想要做的事情,但我认为您所描述的情况是在您的pipeline中使用多个Jobs的一个很好的例子。以下是一个遵循您问题逻辑的示例yaml pipeline。结合dependsOn:condition:的组合,将帮助您在pipeline中构建这些类型的依赖关系图。

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\0
    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

失败流程 成功流程


谢谢您的建议,实际上我已经通过以下建议解决了问题,但无论如何感谢您的建议。如果我遇到类似的管道需要制作,我一定会参考您的想法并尝试按照您所描述的方式实现。 - Chaitanya N G
你好 @eric-smith,我想在传统的流水线中实现类似的工作流程。你能帮我回答一下吗?https://stackoverflow.com/questions/63959947/run-a-task-b-when-all-the-previous-tasks-have-succeeded-except-few-tasksrun-a-t/63972659?noredirect=1#comment113134033_63972659 - Mehul Parmar

2

谢谢@4c74356b41,你的想法解决了我的问题,非常感谢。我尝试了你的建议,并且在其他小调整的帮助下它起作用了。 - Chaitanya N G
你好,@ChaitanyaNG 我正在尝试实现类似的流程。你能分享一下你的解决方案吗?如何检查其他先前任务的状态?另外,你能帮我回答这篇文章吗 -> https://stackoverflow.com/questions/63959947/run-a-task-b-when-all-the-previous-tasks-have-succeeded-except-one-task-aoutput - Mehul Parmar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接