Skip to content

构建扫描(Build Scan)

Build Scan 是 Gradle 提供的构建分析服务,上传构建数据到云端,提供可视化的构建性能分析报告。

生成构建扫描

bash
# 构建时加上 --scan
./gradlew build --scan

# 构建结束后会提示:
# Publishing build scan...
# https://gradle.com/s/abc123xyz  ← 点击链接查看报告

自动发布(推荐)

kotlin
// settings.gradle.kts
plugins {
    id("com.gradle.develocity") version "3.16.2"
}

develocity {
    buildScan {
        publishing.onlyIf { true }  // 始终发布
        termsOfUseUrl.set("https://gradle.com/terms-of-service")
        termsOfUseAgree.set("yes")
    }
}

企业版(Gradle Enterprise)

企业内部可以部署 Gradle Enterprise 服务器:

kotlin
develocity {
    server = "https://ge.example.com"
    buildScan {
        publishing.onlyIf { true }
        // 自动推送,不需要手动同意条款
    }
}

Build Scan 提供的信息

性能分析

  • 每个任务的执行时间
  • 串行 vs 并行执行时间线
  • 缓存命中率
  • 配置时间 vs 执行时间

依赖分析

  • 完整的依赖树
  • 版本冲突可视化
  • 依赖解析时间

测试分析

  • 测试结果总览
  • 失败的测试详情
  • 测试执行时间分布

构建失败诊断

  • 完整的错误堆栈
  • 失败任务的输入/输出

常用标签(自定义数据)

kotlin
develocity {
    buildScan {
        // 添加自定义标签
        tag("CI")
        tag(System.getenv("BRANCH_NAME") ?: "local")
        
        // 添加自定义链接
        link("GitLab", "https://gitlab.example.com")
        
        // 添加自定义值
        value("buildReason", System.getenv("BUILD_REASON") ?: "manual")
        value("gitCommit", providers.exec {
            commandLine("git", "rev-parse", "--short", "HEAD")
        }.standardOutput.asText.get().trim())
    }
}

下一步