第十四天:初探 Build Scan

众所皆知 Gradle 是一个 Build Tool。对於编译式语言来说,编译过程会经过很多手续,这些手续彼此串连相依,若是遇到错误或是有效能问题时,其实并不容易除错,排除问题也很花时间。这时,就需要更专业的工具来协助我们。

Gradle 官方提供了 Build Scan 这样的工具来满足这个需求。Build Scan 可以在执行 Build 过程中一并扫描和纪录所有细节,并将分析报告及运行环境等资讯传送到 scans.gradle.com 这个服务。这是一个免费的线上服务,每当报告上传上去後,就会产生一个可被分享的 Build 纪录,其提供了更多细节资讯,解释了其中发生了什麽以及为什麽,协助开发者更了解 Build 的细节。今天我们就来体验并测试一下这个服务。

执行 Build Scan

要让 Gradle 执行 Build Scan 并将分析报告传送到 scans.gradle.com 非常简单,只要在执行 build 指令时,加上 --scan 参数即可:

$ ./gradlew build --scan

BUILD SUCCESSFUL in 11s
8 actionable tasks: 3 executed, 5 up-to-date

Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service. Do you accept these terms? [yes, no] yes

Gradle Terms of Service accepted.

Publishing build scan...
https://gradle.com/s/g2n2rjorrbvhe

在执行的过程中,Gradle 会询问您是否同意将资料上传到 Gradle 主机,并同意他们的使用条款?这时请输入 yes,Build Scan 完成後,Gradle 会在画面上印出本次分析报告的浏览位置。点一下这个 URL 开启浏览器,Gradle Enterprise 会先请您输入 Email 来启动这个 Build Scan,完成後就会将开通连结寄到您的 Email,点选 Email 里的连结就会正式进到 Build Scan 的分析报告:

从画面上我们可以看到,Build Scan 从 Console Log、Timeline、Performance、Tests、Projects、Dependencies、Build dependencies、Plugins、Switches、Infrastructure 等不同面向提供详细的报告,比平常在终端机的输出多更多,而且很多都辅以图表呈现。若是在检测效能问题或是除错时,有这样的报告相信会很有帮助。

设定自动同意使用条款

上一步在使用 Build Scan 时,你会发现 Gradle 会在中途停下来问你是否同意上传资料及使用条款,然後我们需要手动输入 yes 才有办法继续进行。这在本机测试没什麽问题,反正我们本来就在电脑前可以跟指令互动。但当这个动作是在 CI 主机上执行时,就会造成动作中途且无法继续完成。

这时我们可以在 settings.gradle.kts 里设定安装 Gradle Enterprise Plugin,并预设同意使用条款:

plugins {
    `gradle-enterprise`
    // 或是写
    // id("com.gradle.enterprise") version "3.7"
}
gradleEnterprise {
    buildScan {
        termsOfServiceUrl = "https://gradle.com/terms-of-service"
        termsOfServiceAgree = "yes"
    }
}

这样在 CI 主机上就不会被中断了。有兴趣的朋友可以在 TeamCity 上试试看,不熟 TeamCity 的话,可以参考笔者的另一个铁人赛 《DevOps 萌新的 TeamCity 极速上手宝典》 ,欢迎多多支持!

上传 Build 资料的疑虑

虽然 Gradle 的 Build Scan 服务是免费的,但许多人一听到会有资料上传到第三方主机,而且这个资料还是自己专案建置过程的详细资料,不免有资料隐私及外泄的疑虑。

根据 Gradle 官方的说明,透过 Build Scan 上传的资料只能透过当下随机产生的连结来浏览,只要您没有被随意散布,基本上不容易被其他人取得。而传送到 scans.gradle.com 的分析报告假如没有被浏览的话,3 个月後就会被自动删除。不过一旦 Build Scan 报告被浏览过,它就会被永远留存。当然, 您也可以在观看之後依照意愿将其删除,仍有一定的安全性。

当然,最终极的作法就是购买 Gradle Enterprise 方案罗!您可以把 Build Scan 服务架在公司内部,所有资料就只会上传到自己的主机也只能在内网浏览,这样就不会有资料隐私及外泄的疑虑了。当然,购买 Gradle Enterprise 的另一层意义也是支持 Gradle 团队能持续贡献资源在开发及维护 Gradle 专案上。所以若是公司有余裕的话,笔者觉得是个支持开放原始码专案最好的一种方式。我们 JetBrains 也有购买 Gradle Enterprise,所有 Build Scan 都可以在内网主机上查到,非常方便。

参考资料


<<:  JavaScript 运算子

>>:  【Day04-档案】你知道Excel最大可以开多少笔资料吗?

Day07-gitlab-ci.yml

安装 一开始先租用了一台 linode 的服务器来做 Demo 一个月十块美金 最简单的规格 当然也...

[Day11] 排版的小孩子才做选择 ~ Grid 跟 Flex 我全都要!

本日文章没有前言XD 但没有前言真的有点怪怪的,总之本日文章想要分享过去我在使用 Grid 跟 Fl...

day3 : k8s建置(中)

昨天准备好了control center主机上所需要的各项工具,今天就可以来编写iac的脚本了。 开...

Day 10 - Design System x 实作 — Icon 元件

今天就要来实作 Icon 啦!事不宜迟直接开始! 想先看 Code 或是 Demo 的由此去: G...

DAY19 浅谈深度学习

我们在前面算是完整的介绍了使用机器学习的方法来做资料分析,在剩下最後11天的时间,我想把自己在暑假所...