Este complemento de Gradle proporciona una implementación de caché de compilación que utiliza Google Cloud Storage para almacenar artefactos de compilación.
La caché de compilación toma las siguientes opciones:
Opción | Descripción |
---|---|
cartas credenciales | Archivo de clave JSON de la cuenta de servicio que se utilizará; de lo contrario, se utilizarán las credenciales predeterminadas de la aplicación GCP. (opcional) |
balde | Nombre del depósito de Google Cloud Storage (obligatorio) |
prefijo | Prefijo de ruta para objetos escritos en Google Cloud Storage (opcional) |
actualizar después de segundos | Cantidad de tiempo que se debe esperar antes de que se renueve la marca de tiempo de un artefacto almacenado en caché que todavía está en uso (opcional) |
escribirumbral | Número de bytes en los que el complemento comienza a utilizar un archivo como búfer para escribir entradas de caché: predeterminado 8 MiB (opcional) |
Hay varias formas de utilizar la caché de compilación basada en Google Cloud Storage dentro de sus proyectos.
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 <tarea>
Los siguientes pasos crearán un depósito de Google Cloud Storage llamado $BUCKET
como parte del proyecto de GCP $PROJECT
en su $REGION
con acceso privado. gsutil
está disponible como parte del SDK de Google Cloud.
% gsutil mb -p $PROJECT -c regional -l $REGION gs://$BUCKET [...] % gsutil acl establecido privado gs://$BUCKET [...]
Para crear una cuenta de servicio $ACCOUNT
con acceso al depósito, se deben ejecutar los siguientes comandos.
% gcloud iam service-accounts create $ACCOUNT --display-name "Cuenta de servicio para acceder al caché de compilación de Gradle en Google Cloud Storage" [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
Con la siguiente declaración se crea un archivo de clave JSON $KEY_FILE
que el complemento Gradle podría usar para acceder al depósito.
% de claves de cuentas de servicio iam de gcloud creadas $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
Si los artefactos almacenados en caché deben eliminarse después de dos semanas, se deben aplicar reglas de ciclo de vida como las siguientes al depósito.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% conjunto de reglas del ciclo de vida de gsutil.json gs://$BUCKET [...]
LICENCIA