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

Bitbucket流水线配置:测试失败时仍执行SonarQube扫描且标记失败

Bitbucket流水线配置:测试失败仍执行SonarQube并标记流水线失败

可以实现需求,核心是利用Bitbucket Pipelines的continue-on-error参数,配合手动捕获测试退出码来控制最终流水线状态,具体配置方案如下:

配置思路

  1. 让测试步骤即使失败也不中断流水线,继续执行SonarQube扫描
  2. 记录测试步骤的退出状态,避免continue-on-error掩盖失败信息
  3. SonarQube扫描完成后,根据记录的测试状态决定是否标记整个流水线失败

完整配置示例

pipelines:
  default:
    - step:
        name: 运行Python测试并生成报告
        continue-on-error: true  # 关键:测试失败不中断流水线
        script:
          # 替换成你的Python测试命令,确保生成XML报告
          - pytest --junitxml=test-results.xml
          # 捕获测试命令的退出码并保存到文件
          - echo $? > test_exit_code.txt
        artifacts:
          # 保存报告和退出码文件,供后续步骤使用
          - test-results.xml
          - test_exit_code.txt
    - step:
        name: 执行SonarQube扫描
        script:
          # 替换成你的SonarQube扫描命令,指定测试报告路径
          - sonar-scanner -Dsonar.junit.reportPaths=test-results.xml
    - step:
        name: 验证测试结果并标记流水线状态
        script:
          # 读取之前保存的测试退出码
          - EXIT_CODE=$(cat test_exit_code.txt)
          # 如果测试失败(退出码非0),让当前步骤失败,从而标记整个流水线为失败
          - if [ $EXIT_CODE -ne 0 ]; then exit $EXIT_CODE; fi

各部分说明

  • continue-on-error: true:给测试步骤加上这个参数后,无论测试是否失败,流水线都会继续执行后续的SonarQube扫描步骤。
  • 保存测试退出码:$?是Linux系统中上一条命令的退出码(0表示成功,非0表示失败),将其写入文件后,后续步骤能准确获取测试的真实状态。
  • 最后验证步骤:读取退出码后,如果测试失败就主动退出并返回原错误码,这样整个流水线会被标记为失败(红色),同时SonarQube的扫描任务已经完成。

如果使用的是其他Python测试框架(如unittest),只需调整测试生成XML报告的命令即可,核心逻辑保持不变。

内容的提问来源于stack exchange,提问作者Yak O'Poe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:41