如何知道Azure DevOps构建管道的上一步结果?

问题描述 投票:0回答:2

我想知道是否可以通过某种方式知道azure开发人员在构建管道中执行上一步的结果。

详细解释我的查询:可以说,在天蓝色的Devops中,我有一个大约10个步骤的构建管道,该管道执行一些任务,例如准备构建,构建解决方案,同步以及其他一些事情。

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

  1. STEP 1:成功
  2. STEP 2:成功
  3. STEP 3:失败
  4. STEP 4:我想知道STEP 3执行的状态是失败还是失败基于成功,我要执行STEP 4
  5. [STEP 5:应该与STEP 4类似地执行,即基于以下步骤的执行结果步骤3
  6. STEP 6:应执行
  7. STEP 7:应执行

依此类推,直到步骤10。

我的问题是如何实现这一目标?如何根据前一步的执行结果使几个步骤的执行不被执行,而其余的则应该被执行。

[请注意,我仅在所有先前任务均成功完成但仍无法正常工作时,才尝试像Execute这样放置。它仍然执行步骤4和5。

还请注意,STEP 7具有与其相关的一些自定义条件,该条件可以正常工作。仅提供此注释是为了提供更多有关如何定义或创建构建管道任务的上下文。

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

azure azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task
2个回答
0
投票

您可以有一个自定义条件,如果先前的步骤失败failed()(至少一个先前的步骤),则仅执行步骤3和4,但是之后的所有其他步骤将全部跳过(如果他们希望所有步骤都成功) ),否则将全部执行(如果将它们设置为succeededOrFailed()

您在这个决定中不能真正保持动态。

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


0
投票

您可以在没有阶段和工作的情况下完成您想做的事情,但是我认为您所描述的情况是管道中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\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

failed flowsuccess flow

© www.soinside.com 2019 - 2024. All rights reserved.