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

如何配置Azure流水线在代码覆盖率未达标时失败且仍发布测试结果

解决方案

1. 调整Gradle Jacoco配置

首先确保Jacoco任务执行顺序符合预期:执行单元测试 -> 生成覆盖率报告 -> 执行覆盖率校验,保证即使校验失败,报告文件已经完整生成。在build.gradle.kts中添加如下配置:

tasks.withType<JacocoCoverageVerification> {
    // 确保校验前先生成报告
    dependsOn(tasks.withType<JacocoReport>())
    violationRules {
        rule {
            limit {
                // 配置全局覆盖率最低70%的要求
                minimum = "0.7".toBigDecimal()
            }
        }
    }
}

// 可选:绑定校验任务到build生命周期,执行build时自动触发覆盖率校验
tasks.build {
    dependsOn(tasks.withType<JacocoCoverageVerification>())
}

2. 调整Azure DevOps流水线配置

核心逻辑是:允许Gradle校验失败后继续执行后续步骤,先上传测试和覆盖率报告,再根据Gradle执行结果最终决定流水线状态。

YAML流水线配置示例

# 执行测试、生成报告、覆盖率校验步骤
- task: Gradle@3
  displayName: 'Run tests and coverage check'
  inputs:
    gradleWrapperFile: 'gradlew'
    tasks: 'build'
    publishJUnitResults: false
  continueOnError: true # 关键:即使步骤失败也不终止流水线
  name: gradleRunStep # 给步骤命名,用于后续获取执行状态

# 发布单元测试结果
- task: PublishTestResults@2
  displayName: 'Publish test results'
  inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/build/test-results/test/TEST-*.xml'
  condition: succeededOrFailed() # 关键:无论前置步骤成功/失败都执行

# 发布JaCoCo覆盖率报告
- task: PublishCodeCoverageResults@1
  displayName: 'Publish JaCoCo coverage report'
  inputs:
    codeCoverageTool: 'JaCoCo'
    summaryFileLocation: '**/build/reports/jacoco/test/jacocoTestReport.xml'
    reportDirectory: '**/build/reports/jacoco/test/html'
  condition: succeededOrFailed()

# 最终状态校验:如果前面Gradle步骤失败,标记整个流水线为失败
- script: |
    if [ "$(gradleRunStep.JobStatus)" = "Failed" ]; then
      echo "Code coverage check failed, pipeline marked as failed"
      exit 1
    fi
  displayName: 'Final build status check'
  condition: succeededOrFailed()

经典图形化编辑器配置说明

如果使用非YAML的经典编辑器:

  • 找到Gradle执行步骤,在「控制选项」中勾选「出错时继续」,给步骤设置自定义名称便于后续引用
  • 找到发布测试结果、发布代码覆盖率的步骤,将「执行此任务」的条件设置为「即使先前的任务失败」
  • 新增一个命令行任务,同样设置执行条件为「即使先前的任务失败」,任务内容为判断Gradle步骤的执行状态,若失败则返回非0退出码,将整个流水线标记为失败

内容的提问来源于stack exchange,提问作者Daan Brocatus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:36:05