【Gradle官方文件翻譯】起步2:建立構建掃描
構建掃描是對構建的可分享的專門記錄,可以看到“構建中發生了那些行為以及為什麼會發生這種行為”。通過在專案中使用構建掃描外掛,開發者可以免費地在https://scans.gradle.com/上釋出構建掃描。
將要建立的
本文會展示如何在不對任何構建指令碼進行修改的前提下發布專門的構建掃描。同時讀者也會學到如何通過修改構建指令碼來實現對給定專案的所有構建啟用構建掃描。作為可選項,開發者也可以修改初始指令碼從而給所有的專案啟用構建掃描。
準備工作
- 自己的專案或Gradle提供的示例專案
- 連線至因特網
- Email郵箱
- 大約7分鐘的時間
選擇示例專案
自動啟用構建掃描外掛
自Gradle 4.3起,開發者無需在構建指令碼中新增任何額外配置就可以啟用構建掃描。當使用--scan
$ ./gradlew build --scan
BUILD SUCCESSFUL in 6s
Do you accept the Gradle Cloud Services license agreement (https://gradle.com/terms-of-service)? [yes, no]
yes
Gradle Cloud Services license agreement accepted.
Publishing build scan.. .
https://gradle.com/s/czajmbyg73t62
該機制無需修改構建指令碼就可以非常簡單地建立專門的一次性的構建掃描。如果你需要細粒度的配置,那就需要在構建指令碼或初始指令碼中進行配置,下節會進行講解。
給所有專案啟用構建掃描
給根專案的構建指令碼新增包含如下內容的plugins
程式碼塊:
Groovy
plugins {
id 'com.gradle.build-scan' version '1.16' ①
}
Kotlin
plugins {
id("com.gradle.build-scan") version "1.16" ①
}
如果已經有plugins
接受許可證協議
為了將掃描結果釋出至https://scans.gradle.com/,開發者需要同意許可證協議。除了可以在使用命令列釋出專門掃描時同意,也可以在Gradle構建配置檔案中通過新增如下部分進行指定: Groovy
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes
}
Kotlin
buildScan {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
}
buildScan
程式碼塊是用來配置構建掃描外掛的。在這裡,我們添加了兩條同意許可證協議所需的屬性。此外還有其他一些屬性可用。詳細資訊請參考構建掃描使用者手冊。
釋出構建掃描
通過--scan
命令列標記,可以釋出構建掃描。
我們給build
任務加上--scan
選項。當構建完成,在構建資料上傳到scans.gradle.com之後,會提供一個檢視構建掃描的連線給你。
$ ./gradlew build --scan
BUILD SUCCESSFUL in 5s
Publishing build scan...
https://gradle.com/s/47i5oe7dhgz2c
線上檢視構建掃描
在第一次訪問這個連結的時候,會提示你啟用這個已存在的構建掃描。 啟用構建掃描的Email郵件如圖所示: 通過Email中的連結,就可以看到已建立的構建掃描了。 現在,所有構建掃描的資訊,包括任務的執行時間、每一個構建步驟的耗時、所有測試的結果、使用的外掛、依賴、所有的命令列開關等就都可以查看了。
為所有構建啟用構建掃描(可選)
通過使用Gradle初始化指令碼,開發者就不用非得給每次構建都新增外掛並同意許可了。建立~/.gradle/init.d
(波浪線為使用者home資料夾)檔案,並輸入如下內容:
buildScan.gradle
initscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'com.gradle:build-scan-plugin:1.16'
}
}
rootProject {
apply plugin: com.gradle.scan.plugin.BuildScanPlugin
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
}
buildScan.init.gradle.kts
initscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath("com.gradle:build-scan-plugin:1.16")
}
}
rootProject {
apply<com.gradle.scan.plugin.BuildScanPlugin>()
configure<com.gradle.scan.plugin.BuildScanExtension> {
setTermsOfServiceUrl("https://gradle.com/terms-of-service")
setTermsOfServiceAgree("yes")
}
}
初始化指令碼會在需要的時候下載構建掃描外掛並將其新增到所有專案中,而且還會接受許可證協議。現在,你可以給系統裡任意一個構建使用--scan
標誌了。
這個腳本里還可以新增其他更多的能力,例如在何種情況下才會發布掃描資訊。更多資訊請參考構建掃描使用者手冊。
總結
在本教程中,我們學習瞭如何:
- 生成構建掃描
- 線上檢視構建掃描資訊
- 通過建立初始指令碼,給所有構建啟動構建掃描
接下來的步驟
幫忙改進本教程
尋求反饋或具有疑問?發現拼寫錯誤?和所有的Gradle教程一樣,幫助就是一個GitHub的issue。請在gradle-guides/creating-new-gradle-builds新增issue或拉取請求,我們會給您幫助。