在 Azure DevOps 中,同一作业中的任务可以相互依赖吗?

Nic*_*oub 5 azure azure-devops azure-pipelines

我在 Azure DevOps 中的发布管道有一个作业。该作业有 3 个任务:A、B、C。我需要对此进行设置,以便 B 和 C 仅在 A 成功时运行,但如果 A 成功而 B 失败,则 C 仍然运行。

我似乎无法找出实现这一目标的正确条件。根据文档,您可以使任务依赖于另一个作业的状态,但看起来一个任务不可能依赖于另一个任务。

Sha*_*zyk 3

默认情况下,每个任务只有在前一个任务成功的情况下才会执行,因此只有在 A 成功的情况下才会执行任务 B。

您希望即使任务 B 失败,任务 C 也会被执行,因此将以下条件添加到任务 B 中:

continueOnError: true 
Run Code Online (Sandbox Code Playgroud)

现在,如果任务 B 失败,则任务 C 将被执行,但如果任务 A 失败,则任务 B 和 C 将被跳过。

例如,3 个 PowerShell 任务:

- powershell: 'Write-Host "A"'
  displayName: A

- powershell: 'Write-Host "B"'
  displayName: B
  continueOnError: true

- powershell: 'Write-Host "C"'
  displayName: C
Run Code Online (Sandbox Code Playgroud)

在上述行为中,构建将呈橙色(部分成功),如果您在 C 之后还有其他任务,它们也将被执行,如果您希望任务 B 为红色,并且只有任务 C 在其之后运行,做到这一点并不容易,请检查这个问题和答案。