这个 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 [...]
执照