이 Gradle 플러그인은 Google Cloud Storage를 사용하여 빌드 아티팩트를 저장하는 빌드 캐시 구현을 제공합니다.
빌드 캐시는 다음 옵션을 사용합니다.
옵션 | 설명 |
---|---|
신임장 | 사용할 서비스 계정의 JSON 키 파일입니다. 그렇지 않으면 GCP 애플리케이션 기본 사용자 인증 정보가 사용됩니다. (선택 과목) |
버킷 | Google Cloud Storage 버킷 이름(필수) |
접두사 | Google Cloud Storage에 기록된 객체의 경로 프리픽스(선택사항) |
새로 고침AfterSeconds | 아직 사용 중인 캐시된 아티팩트의 타임스탬프가 갱신될 때까지 기다리는 시간(선택 사항) |
쓰기임계값 | 플러그인이 파일을 캐시 항목 쓰기용 버퍼로 사용하기 시작하는 바이트 수 - 기본값 8MiB(선택 사항) |
프로젝트 내에서 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 <작업>
다음 단계에서는 $REGION
에 비공개 액세스 권한이 있는 GCP 프로젝트 $PROJECT
의 일부로 $BUCKET
이라는 Google Cloud Storage 버킷을 만듭니다. gsutil
Google Cloud SDK의 일부로 제공됩니다.
% gsutil mb -p $PROJECT -c 지역 -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 서비스 계정 키는 $KEY_FILE --iam-account $ACCOUNT@$PROJECT.iam.gserviceaccount.com을 생성합니다. [...]
캐시된 아티팩트를 2주 후에 삭제해야 하는 경우 다음과 같은 수명 주기 규칙을 버킷에 적용해야 합니다.
{
"rule" :
[
{
"action" : { "type" : " Delete " },
"condition" : { "age" : 14 }
}
]
}
% gsutil 수명 주기 세트 rule.json gs://$BUCKET [...]
특허