Dieses Gradle-Plugin bietet eine Build-Cache-Implementierung, die Google Cloud Storage zum Speichern von Build-Artefakten verwendet.
Der Build-Cache akzeptiert die folgenden Optionen:
Option | Beschreibung |
---|---|
Anmeldeinformationen | JSON-Schlüsseldatei des zu verwendenden Dienstkontos, andernfalls werden die Standardanmeldeinformationen der GCP-Anwendung verwendet. (optional) |
Eimer | Name des Google Cloud Storage-Buckets (erforderlich) |
Präfix | Pfadpräfix für in Google Cloud Storage geschriebene Objekte (optional) |
RefreshAfterSeconds | Wartezeit, bis der Zeitstempel eines zwischengespeicherten Artefakts, das noch verwendet wird, erneuert wird (optional) |
writeThreshold | Anzahl der Bytes, ab denen das Plugin beginnt, eine Datei als Puffer zum Schreiben von Cache-Einträgen zu verwenden – Standard 8 MiB (optional) |
Es gibt mehrere Möglichkeiten, den auf Google Cloud Storage basierenden Build-Cache in Ihren Projekten zu verwenden.
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 <Aufgabe>
Mit den folgenden Schritten wird ein Google Cloud Storage-Bucket mit dem Namen $BUCKET
als Teil des GCP-Projekts $PROJECT
in Ihrer $REGION
mit privatem Zugriff erstellt. gsutil
ist als Teil des Google Cloud SDK verfügbar.
% gsutil mb -p $PROJECT -c regional -l $REGION gs://$BUCKET [...] % gsutil acl set private gs://$BUCKET [...]
Um ein Dienstkonto $ACCOUNT
mit Zugriff auf den Bucket zu erstellen, müssen die folgenden Befehle ausgeführt werden.
% gcloud iam service-accounts create $ACCOUNT --display-name „Dienstkonto für den Zugriff auf den Gradle-Build-Cache in Google Cloud Storage“ [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
Mit der folgenden Anweisung wird eine JSON-Schlüsseldatei $KEY_FILE
erstellt, die vom Gradle-Plugin für den Zugriff auf den Bucket verwendet werden könnte.
% gcloud iam service-accounts-Schlüssel erstellen $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
Wenn zwischengespeicherte Artefakte nach zwei Wochen gelöscht werden sollen, sollten Lebenszyklusregeln wie die folgenden auf den Bucket angewendet werden.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% gsutil Lifecycle Set Rules.json gs://$BUCKET [...]
LIZENZ