這個 Gradle 外掛程式提供了一個建置快取實現,它使用 Google Cloud Storage 來儲存建置工件。
建置快取採用以下選項:
選項 | 描述 |
---|---|
證書 | 要使用的服務帳戶的 JSON 金鑰文件,否則使用 GCP 應用程式預設憑證。 (選修的) |
桶 | Google Cloud Storage 儲存桶的名稱(必填) |
前綴 | 寫入 Google Cloud Storage 的物件的路徑前綴(可選) |
秒後刷新 | 仍在使用的快取工件的時間戳記更新之前等待的時間(可選) |
寫閾值 | 外掛程式開始使用檔案作為寫入快取條目的緩衝區的位元組數 - 預設 8 MiB(可選) |
有多種方法可以在專案中使用基於 Google Cloud Storage 的建置快取。
settings.gradle
中的插件buildscript {
repositories {
maven {
url ' https://plugins.gradle.org/m2/ '
}
}
dependencies {
classpath ' net.idlestate:gradle-gcs-build-cache:1.3.0 '
}
}
apply plugin : ' net.idlestate.gradle-gcs-build-cache '
buildCache {
local {
enabled = false
}
remote( GCSBuildCache . class ) {
credentials = ' my-key.json ' // (optional)
bucket = ' my-bucket '
prefix = ' app-cache ' // (optional)
refreshAfterSeconds = 86400 // 24h (optional)
writeThreshold = 8 * 1024 * 1024 // 8 MiB
enabled = true
push = true
}
}
settings.gradle
中手動註冊buildscript {
repositories {
maven {
url ' https://plugins.gradle.org/m2/ '
}
}
dependencies {
classpath ' net.idlestate:gradle-gcs-build-cache:1.3.0 '
}
}
import net.idlestate.gradle.caching.GCSBuildCache
import net.idlestate.gradle.caching.GCSBuildCacheServiceFactory
buildCache {
local {
enabled = false
}
registerBuildCacheService( GCSBuildCache . class, GCSBuildCacheServiceFactory . class )
remote( GCSBuildCache . class ) {
credentials = ' my-key.json ' // (optional)
bucket = ' my-bucket '
prefix = ' app-cache ' // (optional)
refreshAfterSeconds = 86400 // 24h (optional)
writeThreshold = 8 * 1024 * 1024 // 8 MiB
enabled = true
push = true
}
}
initscript {
repositories {
maven {
url ' https://plugins.gradle.org/m2/ '
}
}
dependencies {
classpath ' net.idlestate:gradle-gcs-build-cache:1.3.0 '
}
}
import net.idlestate.gradle.caching.GCSBuildCache
import net.idlestate.gradle.caching.GCSBuildCacheServiceFactory
gradle . settingsEvaluated { settings ->
settings . buildCache {
local {
enabled = false
}
registerBuildCacheService( GCSBuildCache . class, GCSBuildCacheServiceFactory . class )
remote( GCSBuildCache . class ) {
credentials = ' my-key.json ' // (optional)
bucket = ' my-bucket '
prefix = ' app-cache ' // (optional)
refreshAfterSeconds = 86400 // 24h (optional)
writeThreshold = 8 * 1024 * 1024 // 8 MiB
enabled = true
push = true
}
}
}
% ./gradlew --build-cache --init-script init-build-cache.gradle <任務>
以下步驟將在您的$REGION
中建立一個名為$BUCKET
的 Google Cloud Storage 儲存桶,作為 GCP 專案$PROJECT
的一部分,並具有私有存取權限。 gsutil
作為 Google Cloud SDK 的一部分提供。
% gsutil mb -p $PROJECT -c 區域 -l $REGION gs://$BUCKET [...] % gsutil acl 設定私有 gs://$BUCKET [...]
若要建立有權存取儲存桶的服務帳戶$ACCOUNT
必須執行下列命令。
% gcloud iam service-accounts create $ACCOUNT --display-name "用於存取 Google Cloud Storage 中 Gradle 建置快取的服務帳戶" [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
使用下列語句建立可由 Gradle 外掛程式用來存取儲存體桶的 JSON 金鑰檔案$KEY_FILE
。
% gcloud iam 服務帳戶金鑰建立 $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
如果快取的工件應在兩週後刪除,則應將以下生命週期規則應用於儲存桶。
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% gsutil生命週期設定rules.json gs://$BUCKET [...]
執照