대상: iOS안드로이드·JVM을 같은 원격 Mac에서 돌리는 CI 유지보수자. 내용: 국경 풀 병목, 미러 라우팅 표, settings.gradle.kts 템플릿, gradle.properties 병렬·타임아웃, 캐시 키, 재시도 후 lockfile, 사백일·인증서 FAQ. 연관: 코코아팟 가속, 미러 재개, SPM 풀. 정본: ko 슬러그.

국경 간 Gradle 풀 병목 초상

엑스코드와 그래들이 한 NVMe를 나누면 지연은 종종 CPU가 아니라 메타데이터 왕복소켓 대기에서 납니다.

  1. 저장소 이중: build.gradle.ktsrepositoriesdependencyResolutionManagement와 충돌합니다.
  2. 병렬 과다: 워커·코틀린 데몬이 메모리를 밀면 코코아팟 단계가 밀립니다.
  3. 캐시 키: 공유 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 검수

  1. systemProp.http.socketTimeout=120000, systemProp.https.socketTimeout=120000
  2. systemProp.http.connectionTimeout=30000 및 HTTPS 상응 값
  3. 재시도는 지수 백오프 최대 세 번 후 성공 시 ./gradlew dependencies --write-locks 또는 락 diff로 그래프 고정

FAQ: 사백일·인증서·사설 혼용

증상 원인 조치
플러그인 단계 사백일 미러가 인증 헤더 제거 종단 TLS 정렬·프로퍼티 자격 증명
PKIX 실패 기업 CA가 JVM 신뢰 저장소 밖 키체인·truststore 동기화·자바 홈 로그 고정
워커마다 다른 해석 스냅샷 저장소 중복 순서·exclusiveContent로 그룹 한정

인용 가능 파라미터

  • 워커 네 개와 네 기가바이트 힙은 원격 맥에서 패스트레인과 공존하기 쉬운 출발점입니다.
  • 소켓 이분 타임아웃은 멈춘 데몬을 줄입니다.
  • 재시도 세 번·락파일 게이트로 일시 장애와 그래프 오염을 동시에 줄입니다.

요약·공개 페이지

중앙 저장소·병렬 상한·캐시 분리·타임아웃·락 검증을 세트로 두세요. 요금, 구매, 도움말, 고객 지원, 블로그, 은 로그인 없이 열립니다.

iOS 옆 JVM·안드로이드 CI용 원격 Mac

티어·리전을 비교하세요.