Этот плагин Gradle предоставляет реализацию кэша сборки, которая использует Google Cloud Storage для хранения артефактов сборки.
Кэш сборки принимает следующие параметры:
Вариант | Описание |
---|---|
реквизиты для входа | Ключевой файл JSON используемой учетной записи службы, в противном случае используются учетные данные приложения GCP по умолчанию. (необязательный) |
ведро | Название сегмента Google Cloud Storage (обязательно) |
префикс | Префикс пути для объектов, записываемых в Google Cloud Storage (необязательно). |
обновитьАфтерСекундс | Время ожидания, прежде чем будет обновлена временная метка кэшированного артефакта, который все еще используется (необязательно). |
записьПорог | Количество байт, при котором плагин начинает использовать файл в качестве буфера для записи записей в кэше — по умолчанию 8 МБ (необязательно) |
Существует несколько способов использования кэша сборки на основе 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 <задача>
Следующие шаги позволят создать корзину Google Cloud Storage с именем $BUCKET
как часть проекта GCP $PROJECT
в вашем $REGION
с частным доступом. 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 «Служебный аккаунт для доступа к кешу сборки Gradle в Google Cloud Storage» [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
Ключевой файл JSON $KEY_FILE
, который может использоваться плагином Gradle для доступа к корзине, создается с помощью следующего оператора.
% ключей сервисных учетных записей gcloud iam создать $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
Если кэшированные артефакты должны быть удалены через две недели, к корзине следует применить следующие правила жизненного цикла.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% набор правил жизненного цикла gsutil.json gs://$BUCKET [...]
ЛИЦЕНЗИЯ