第二十天:在 TeamCity 上执行 Build Scan

昨天介绍了 Gradle 的 Build Scan 功能,让我们可以清楚的了解 Build 过程中的细节,是使用 Gradle 时的一个强大工具。当然,我们也可以把 Build Scan 跟 TeamCity 的建置工作结合,方便在每一次执行建置时一并产生 Build Scan 报告。

设定自动同意使用条款

在 TeamCity 上执行 Build Scan 的方式很简单,只要修改 Build Step 里 Build 那一步,把指令从 build 变成 build --scan 即可。

不过实际执行後,应该会发现虽然 Build 能顺利完成,但 Build Scan 并没有办法产生。开启 Build Log 来看,会发现 Gradle 回应有一个设定问题(The build scan was not published due to a configuration problem),由於没有同意上传资料及使用条款所以无法执行 Build Scan。还记得我们在昨天使用 Build Scan 时,会需要手动在终端机里回应 yes 才有办法产生出 Build Scan 吗?就是因为这样,所以动作在 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"
    }
}

设定好後再执行一次,这次 Build Scan 的动作就不会被中断了。

虽然目前可以执行 Build Scan,但产生出的报告连结是直接输出在 Console Output 里,我们虽然还是可以手动地到 TeamCity 的 Build Log 查到这个连结,但总不是这麽方便,有没有什麽方式可以让我们直接在 Build 页面就有连结可以直接点选看报告呢?

Teamcity Build Scan Plugin

很幸运的,笔者在 Marketplace 上发现了这个 Integration for Gradle and Maven build scans TeamCity Plugin,可以帮我们在每次 Build 完之後抓取 Build Scan 的 URL 并做成连结显示在 Build 首页!

依照之前学过的方式,先进到 Administration,选左边的 Plugins 设定。TeamCity 会列出目前所有安装的 Plugin,接着使用 Browse plugin repository 直接跳转到 Marketplace 页面,以「Integration for Gradle and Maven build scans」名称搜寻出该 Plugin,点选右边的按钮安装。安装完成後,TeamCity 也会提示启动这个 Plugin。

另外,Plugin 的作者也帮我们写了一个 Gradle Plugin ,让 Gradle 在执行 Build 的时候会通知 TeamCity Plugin 去抓取产生出的 URL。安装这个 Plugin 的方式很简单,只要在 settings.gradle.kts 里新增一行即可,完成後记得 Reimport Gradle 并 Commit & Push。

plugins {
    // ...
    id("nu.studer.build-scan.teamcity") version "1.1"
}

回到 Shopping Cart 的 Build 首页,再执行一次 Build 後,我们可以看到 Build Scan Plugin 帮我们自动把 Build Scan 报告的 URL 直接放在首页上,不用再进到 Build Log 里就可以直接点击连结看报告,是不是方便多了呢?

参考资料


<<:  Material UI in React [Day 24] Utils 工具组

>>:  [D10] placeholder for d10

【Day13】Latch 的生成条件以及如何避免(下)

Latch 的生成条件 上一篇讲解了什麽是 latch,其又与 flip-flop 差在哪,也解释了...

未来狂想:金融领域

人的科技文明发展始终来自於人性 在科技的发展与技术的发展之下,在很多的领域都有许多的应用,甚至因为科...

Day3 阿里云使用须知与中国网路

前言:   随着网路时代普及生活化,各国政府对IT资讯产业也推行了相当多的管理法案以维护网际网路使用...

Day21 CSS完成简单的网页排版!

前面我们有了导览列加上banner区块!接下来的排版就可以很快速地套用我们之前所学,display:...

Render Functions

今天要介绍的是Render Functions 先来看一段官网对render function的介绍...