この 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 <タスク>
次の手順では、GCP プロジェクト$PROJECT
の一部として$BUCKET
という名前の Google Cloud Storage バケットを$REGION
にプライベート アクセスで作成します。 gsutil
Google Cloud SDK の一部として利用できます。
% gsutil mb -p $PROJECT -c Regional -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 service-accounts キー create $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
キャッシュされたアーティファクトを 2 週間後に削除する必要がある場合は、次のようなライフサイクル ルールをバケットに適用する必要があります。
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% gsutil ライフサイクル セット rules.json gs://$BUCKET [...]
ライセンス