대상: iOS와 안드로이드·JVM을 같은 원격 Mac에서 돌리는 CI 유지보수자.
내용: 국경 풀 병목, 미러 라우팅 표,
settings.gradle.kts 템플릿, gradle.properties 병렬·타임아웃, 캐시 키, 재시도 후 lockfile, 사백일·인증서 FAQ.
연관: 코코아팟 가속, 미러 재개, SPM 풀.
정본: ko 슬러그.
국경 간 Gradle 풀 병목 초상
엑스코드와 그래들이 한 NVMe를 나누면 지연은 종종 CPU가 아니라 메타데이터 왕복과 소켓 대기에서 납니다.
- 저장소 이중:
build.gradle.kts의repositories가dependencyResolutionManagement와 충돌합니다. - 병렬 과다: 워커·코틀린 데몬이 메모리를 밀면 코코아팟 단계가 밀립니다.
- 캐시 키: 공유
GRADLE_USER_HOME은 형제 잡의 원격 캐시 충돌을 부릅니다.
미러 라우팅 짧은 매트릭스
| 방식 | 장점 | 원격 Mac 주의 |
|---|---|---|
dependencyResolutionManagement 미러 |
플러그인·의존성 한곳 선언 | Nexus 혼합 시 exclusiveContent 필수 |
| 리전 샤드만 | 스크립트 변경 적음 | 샤드별 웜 캐시 편차 |
| VPN·SSH 릴레이 | 레거시 방화벽 유지 | 지터·CPU 경쟁 증가 |
settings.gradle.kts 미러 템플릿
서브프로젝트 적용 전에 플러그인·의존성 저장소를 동일 규칙으로 고정합니다.
pluginManagement {
repositories {
maven("https://mirrors.example.internal/gradle-plugins")
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven {
url = uri("https://mirrors.example.internal/maven-central")
content { includeGroupByRegex(".*") }
}
maven {
url = uri("https://nexus.corp.example/repository/maven-releases")
credentials {
username = providers.gradleProperty("corpMavenUser").get()
password = providers.gradleProperty("corpMavenPass").get()
}
}
}
}
- 비밀은 CI 금고→그래들 프로퍼티로만 주입합니다.
- 래퍼 zip도 내부 미러에 두어 부트스트랩 왕복을 줄입니다.
병렬 워커·데몬 메모리 상한
org.gradle.parallel=true, org.gradle.workers.max=4, org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m를 속성에 고정하고 비교 실험 때만 CLI에 --parallel·--max-workers를 덧붙여 로그에 남깁니다.
캐시 디렉터리·키 명명·무효화
잡마다 GRADLE_USER_HOME을 분리하고 ORG_GRADLE_PROJECT_ciBranchSlug 같은 속성으로 브랜치를 메타에 실습니다. 코틀린 그래들 플러그인 메이저·JDK 툴체인 변경 시 원격 캐시 엔트리를 무효 경계로 기록합니다. 원격 캐시 푸시에는 실행 환경 슬러그를 로그에 노출하지 말고 속성과 금고만 사용하세요.
타임아웃·재시도·lockfile 검수
systemProp.http.socketTimeout=120000,systemProp.https.socketTimeout=120000systemProp.http.connectionTimeout=30000및 HTTPS 상응 값- 재시도는 지수 백오프 최대 세 번 후 성공 시
./gradlew dependencies --write-locks또는 락 diff로 그래프 고정
FAQ: 사백일·인증서·사설 혼용
| 증상 | 원인 | 조치 |
|---|---|---|
| 플러그인 단계 사백일 | 미러가 인증 헤더 제거 | 종단 TLS 정렬·프로퍼티 자격 증명 |
| PKIX 실패 | 기업 CA가 JVM 신뢰 저장소 밖 | 키체인·truststore 동기화·자바 홈 로그 고정 |
| 워커마다 다른 해석 | 스냅샷 저장소 중복 | 순서·exclusiveContent로 그룹 한정 |
인용 가능 파라미터
- 워커 네 개와 네 기가바이트 힙은 원격 맥에서 패스트레인과 공존하기 쉬운 출발점입니다.
- 소켓 이분 타임아웃은 멈춘 데몬을 줄입니다.
- 재시도 세 번·락파일 게이트로 일시 장애와 그래프 오염을 동시에 줄입니다.