Azure Pipelines:如何使任务依赖于先前的任务?

lak*_*824 5 windows testing continuous-integration azure-devops azure-pipelines

我在 windows-2019 上使用 Azure-Pipelines 进行 CI 集成。这是一个场景,任务 # 的平均发生顺序(1 是第一个)。

在任务 2 中,我正在运行测试。在任务 3 中,我想生成关于这些测试的报告,无论测试是成功还是失败(因此将 - 添加condition: succeededOrFailed()到任务 3)。

但是,在任务 1 中,我正在构建 repo。如果构建失败,我不希望运行任何后续任务。但由于任务 3 有condition: succeededOrFailed(),它仍然运行并产生另一个错误。我的目标是让任务 3 运行,无论任务 2 是否失败或成功,但如果任务 1 失败则不会。

我不确定处理这个问题的最佳方法。是否可以使任务 3 依赖于任务 2?或者,如果任务 1 失败,我可以立即停止整个管道吗?

另外,对于任务 1,我尝试了,continueOnError: false因为我认为它会在那里停止管道,但它没有按照我的想法做。任何帮助将非常感激!

Kev*_*SFT 5

我的目标是让任务 3 运行,无论任务 2 是否失败或成功,但如果任务 1 失败则不会。

根据您的要求,您可以连接任务 3 和任务 1。

这是 Yaml 模板:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: task1
...


- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      # Write your PowerShell commands here.

      Write-Host "##vso[task.setvariable variable=task.A.status]Success"      
  condition: succeeded()

- task: task2
 ...
  condition: succeeded()

- task: task 3
....
  condition: and (succeededOrFailed(), eq(variables['task.A.status'], 'success'))
Run Code Online (Sandbox Code Playgroud)

解释?

所述Powershell task用于设置的output variable任务1,当任务1的成功,该变量将所设置的值success。此变量可用于以下任务。

任务 2 中的条件取决于任务 1。

在任务3条件需要满足两个条件在同一时间。(1.无论成功还是失败,2.自定义变量值为success)。

那么只有当任务 1 成功时,任务 3 才会运行。无论任务 2 失败还是成功,任务 3 都会运行。

希望这可以帮助。