构建扫描是轻松分享构建数据的好方法,但如果你的团队想把他们自己的数据添加到这些构建扫描中呢?他们可以!除了在构建扫描中自动捕获的大量信息外,你还可以附加你自己的自定义数据,以提供对构建的更深入了解。这种自定义数据可以采取标签、链接和键值格式的任意自定义值的形式。
通过添加自定义数据到你的构建扫描中,你可以很容易地找到某种类型的构建,提供快速链接到GitHub上适用的源代码提交,添加有用的CI构建信息,等等。然后,当你与队友分享单一的构建扫描链接时,他们就可以快速方便地获得大量有关构建的信息,使他们更容易诊断构建环境问题,修复测试失败,等等。
如果你对构建扫描感到陌生,你可以在我们关于这个主题的介绍性博文中了解到它们。你也可以在《构建扫描用户手册》中找到更多细节,探索一些构建扫描的例子,或者用这个构建扫描项目的样本进行实验。
现在,让我们通过一些例子,将自定义数据添加到你的构建扫描中(见用户手册中的其他例子)。
标签
让我们从最简单的自定义数据类型开始:标签。标签是向您的构建扫描添加简单元数据的一种方式。您可以使用标签为您的构建添加上下文,例如,构建是在本地还是在CI服务器上运行,构建是否有任何本地修改,构建失败的错误类型等。下面是一个构建扫描的例子,它将构建标记为:
- 在CI上运行
- 来自主分支
- 包含本地代码修改("dirty")。
例如,要附加一个标签,显示构建是在本地还是在CI服务器上运行,可以在构建脚本中添加以下内容:
if (System.getenv("CI")) {
buildScan.tag "CI"
} else {
buildScan.tag "LOCAL"
}
然后在查看构建扫描时,该标签会显示在项目名称下:
链接
除了标签之外,您还可以加入构建扫描的读者可能觉得有用的链接。例如,您可以包括一个指向GitHub上项目源的方便链接,或者指向Gradle构建的CI结果的链接。这个构建扫描的例子演示了这种链接的样子。
假设你的CI工具将构建结果的URL作为一个环境变量来使用。你可以通过在你的构建脚本中使用下面的代码来抓取该值并将其作为一个自定义链接:
if (System.getenv("CI")) {
buildScan.link "CI build", System.getenv("BUILD_URL")
}
你还可以灵活地添加一个链接到项目源代码的当前版本或提交。下面的例子将构建扫描链接到GitHub上的相应提交(只要Git命令行工具可用):
String commitId = 'git rev-parse --verify HEAD'.execute().text.trim()
buildScan.link "Source", "https://github.com/gradle/gradle-build-scan-quickstart/tree/" + commitId
查看构建扫描时,链接会显示在顶部部分:
自定义值
自定义值可以用来使任何信息成为构建扫描的一部分。在这个构建扫描的例子中,你可以看到相应的 CI 构建日期、CI 构建编号和 Git 分支的名称作为自定义值。这些值在查看构建扫描或在Gradle Enterprise中搜索构建扫描时都可以使用。让我们通过几个例子来说明如何在构建扫描中添加自定义值。
在我们的第一个例子中,我们假设你的CI工具通过环境变量将构建信息注入到构建中。然后你可以在你的构建脚本中使用以下代码,将构建号和日期附加到构建扫描中:
if (System.getenv("CI")) {
buildScan.value "CI build number", System.getenv("BUILD_NUMBER")
buildScan.value "CI build date", System.getenv("BUILD_DATE")
}
由于我们是在Gradle构建脚本中设置这些自定义值,所以你有能力做一些事情,比如运行外部命令来捕获更多关于项目状态的信息。例如,你可以通过运行Git命令来添加当前构建的Git分支,并将结果设置为自定义值:
String branchName = 'git rev-parse --abbrev-ref HEAD'.execute().text.trim()
buildScan.value "Git branch", branchName
在查看构建扫描时,自定义值会显示在主页面上:
命令行
为了让您在向构建扫描传递自定义数据方面有更大的灵活性,您还可以在命令行中指定标签、链接和自定义值。例如,您可以在构建扫描中快速附加临时信息,以便:
- 帮助调试一个特定的本地构建失败
- 标记一个实验性的构建
- 添加 CI 特定的自定义数据,而无需修改您的构建脚本
您可以通过指定具有适当名称的系统属性来实现这一点,正如这些例子所展示的:
$ gradle build -Dscan.tag.EXPERIMENTAL
$ gradle build -Dscan.link.buildUrl=$CI_BUILD_URL
$ gradle build -Dscan.value.buildNumber=$CI_BUILD_NUMBER
第一个添加了一个名为 "EXPERIMENTAL "的标签,第二个添加了一个名为 "buildUrl "的链接,第三个添加了一个名为 "buildNumber "的自定义值。
基于自定义数据的搜索
当使用Gradle Enterprise的内部构建扫描时,你可以根据标签和自定义值等自定义数据来搜索构建扫描。例如,你可以使用这个截图中的术语搜索所有在CI上针对主分支运行的构建。
现场演示
关于添加自定义数据的现场演示和更多的例子,请看Luke Daley和Etienne Studer最近在湾区Gradle用户聚会上的演讲。该视频从构建扫描的概述开始,在22:30左右深入到添加自定义数据的细节。
在你的构建扫描中添加自定义数据,使你有能力和灵活性用标签、链接或其他适合你的团队特定需求的数据来增强你的构建扫描。这样你就有更多的信息可以在构建扫描中与你的团队成员轻松分享--减少了诊断构建失败的猜测。