Este plug-in Gradle fornece uma implementação de cache de build que usa o Google Cloud Storage para armazenar artefatos de build.
O cache de compilação usa as seguintes opções:
Opção | Descrição |
---|---|
credenciais | Arquivo de chave JSON da conta de serviço a ser usada. Caso contrário, serão usadas as credenciais padrão do aplicativo do GCP. (opcional) |
balde | Nome do bucket do Google Cloud Storage (obrigatório) |
prefixo | Prefixo do caminho para objetos gravados no Google Cloud Storage (opcional) |
atualizarAfterSeconds | Quantidade de tempo de espera antes que o carimbo de data/hora de um artefato em cache que ainda está em uso seja renovado (opcional) |
escreverLimiar | Número de bytes em que o plugin começa a usar um arquivo como buffer para gravar entradas de cache - padrão 8 MiB (opcional) |
Existem várias maneiras de usar o cache de compilação baseado no Google Cloud Storage em seus projetos.
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 <tarefa>
As etapas a seguir criarão um bucket do Google Cloud Storage chamado $BUCKET
como parte do projeto $PROJECT
do GCP em sua $REGION
com acesso privado. gsutil
está disponível como parte do SDK do Google Cloud.
% gsutil mb -p $PROJETO -c regional -l $REGION gs://$BUCKET [...] % gsutil acl set privado gs://$BUCKET [...]
Para criar uma conta de serviço $ACCOUNT
com acesso ao bucket, os seguintes comandos devem ser executados.
% gcloud iam service-accounts create $ACCOUNT --display-name "Conta de serviço para acessar o cache de compilação do Gradle no Google Cloud Storage" [...] % gsutil acl ch -u $ACCOUNT@$PROJECT.iam.gserviceaccount.com:WRITE gs://$BUCKET [...]
Um arquivo de chave JSON $KEY_FILE
que pode ser usado pelo plugin Gradle para acessar o bucket é criado com a seguinte instrução.
% Chaves de contas de serviço gcloud iam criadas $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com [...]
Se os artefatos armazenados em cache precisarem ser excluídos após duas semanas, regras de ciclo de vida como as seguintes deverão ser aplicadas ao bucket.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% conjunto de ciclo de vida gsutil regras.json gs://$BUCKET [...]
LICENÇA