Ce plugin Gradle fournit une implémentation de cache de build qui utilise Google Cloud Storage pour stocker les artefacts de build.
Le cache de build prend les options suivantes :
Option | Description |
---|---|
informations d'identification | Fichier de clé JSON du compte de service à utiliser, sinon les informations d'identification par défaut de l'application GCP sont utilisées. (facultatif) |
seau | Nom du bucket Google Cloud Storage (obligatoire) |
préfixe | Préfixe de chemin pour les objets écrits sur Google Cloud Storage (facultatif) |
actualiserAprèsSeconds | Délai d'attente avant que l'horodatage d'un artefact mis en cache encore utilisé soit renouvelé (facultatif) |
seuil d'écriture | Nombre d'octets à partir duquel le plugin commence à utiliser un fichier comme tampon pour écrire les entrées du cache - par défaut 8 Mo (facultatif) |
Il existe plusieurs façons d'utiliser le cache de build basé sur Google Cloud Storage dans vos projets.
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 <tâche>
Les étapes suivantes créeront un bucket Google Cloud Storage nommé $BUCKET
dans le cadre du projet GCP $PROJECT
dans votre $REGION
avec accès privé. gsutil
est disponible dans le cadre du SDK Google Cloud.
% gsutil mb -p $PROJECT -c régional -l $REGION gs://$BUCKET [...] % gsutil acl défini un gs privé://$BUCKET [...]
Pour créer un compte de service $ACCOUNT
avec accès au bucket, les commandes suivantes doivent être exécutées.
% gcloud iam service-accounts create $ACCOUNT --display-name "Compte de service pour accéder au cache de build Gradle dans Google Cloud Storage" [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
Un fichier de clé JSON $KEY_FILE
qui pourrait être utilisé par le plugin Gradle pour accéder au compartiment est créé avec l'instruction suivante.
% Clés des comptes de service gcloud iam créées $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
Si les artefacts mis en cache doivent être supprimés après deux semaines, des règles de cycle de vie telles que celles-ci doivent être appliquées au bucket.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% cycle de vie gsutil défini règles.json gs://$BUCKET [...]
LICENCE