You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline如何按集成测试结果控制任务运行及流水线终止

实现方案

Azure DevOps Pipelines 提供了内置的状态判断函数,配合任务name属性和condition参数即可实现你的需求,无需额外自定义变量捕获任务状态。


配置要点

  • 给「Run Integration Tests」任务添加唯一name标识,用于后续针对该任务的状态判断
  • 给「Publish e2e test videos」任务添加condition: succeededOrFailed('任务名'),保证无论前序测试任务成功还是失败,该发布任务都会执行
  • 给「Publish Web Static Artifact」任务添加condition: succeeded('任务名'),保证只有测试任务执行成功时,才会发布静态资源,测试失败时该任务自动跳过,流水线执行完视频发布后直接终止,整体状态标记为失败

完整修改后的azure-pipelines.yml

trigger:
  - main

pool:
  vmImage: ubuntu-latest

steps:
    - script: ./e2e.sh
      displayName: Run Integration Tests
      # 给测试任务添加唯一name标识
      name: E2ETest

    - task: PublishBuildArtifacts@1
      displayName: Publish e2e test videos
      inputs:
        PathtoPublish: 'app/cypress/videos'
        ArtifactName: Videos
        publishLocation: 'Container'
      # 无论E2ETest成功失败都执行本任务
      condition: succeededOrFailed('E2ETest')
      # 可选配置:如果发布视频本身出错也不阻塞后续流程,可取消下面这行的注释
      # continueOnError: true

    - task: PublishBuildArtifacts@1
      displayName: Publish Web Static Artifact
      inputs:
        PathtoPublish: 'app/dist/web'
        ArtifactName: Web
        publishLocation: 'Container'
      # 只有E2ETest执行成功时才运行本任务
      condition: succeeded('E2ETest')

内置状态函数说明:

  • succeeded('任务名'):仅当指定任务执行成功时返回true
  • succeededOrFailed('任务名'):指定任务执行完成,无论成功或失败都返回true(任务被手动取消的场景不会返回true)
  • always():无论前序任何状态都执行,包含手动取消场景,如果你需要即使用户手动取消流水线也发布视频,可把视频发布任务的condition替换为always()

内容的提问来源于stack exchange,提问作者Werner Raath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:15:00