전체 대 affected · 캐시 키 · 읽기 전용 팬아웃 · 6단계 게이트
여러 대의 원격 Mac Mesh에서 대형 Monorepo를 돌리는 팀은 캐시 키 드리프트, affected 그래프와 Runner 라벨 불일치, 반쯤 쓴 캐시로 큐를 태우곤 합니다. 본문은 전체 빌드, affected, 전용 헤비 노드 결정표와 재현 가능한 입력 경계, 읽기 전용 팬아웃, 6단계 게이트를 제시합니다. 아티팩트 팬아웃 및 Merge Queue와 함께 읽으십시오.
영향 범위 빌드는 변경 그래프, 잠금 파일, 툴체인 지문의 정렬에 의존합니다. 대화형 세션과 무인 작업이 같은 접두사를 공유하면 유령 의존성이 키를 오염시켜 지표에 잘 드러나지 않습니다.
캐시·아티팩트는 바이트 경로, 본문은 그래프 가지치기와 트리거입니다.
그래프·라벨 드리프트: Runner 라벨마다 워크스페이스 루트가 달라 affected 집합이 갈립니다.
잠금 파일 누락: 해석은 바뀌었는데 오래된 tarball이 히트합니다.
툴체인 지문 없음: 소규모 Xcode 차이가 manifest에 없습니다.
팬아웃·계산 혼선: 읽기 전용 소비자가 캐시 접두사에 씁니다.
전체 복귀 조건 없음: 공유 커널·codegen 변경에도 affected만 고정합니다.
다지역 원격 Mac 풀의 Monorepo CI에 맞춘 축입니다.
| 축 | 전체 우선 | affected 우선 | 헤비 분리 |
|---|---|---|---|
| 변경 유형 | 코드 생성, 빌드 스크립트, 공유 네이티브 경계 | 단일 앱 패키지 UI·카피 | 야간 배치와 주간 PR이 같은 풀 경쟁 |
| 신호 | affected 연속 실패·통합 테스트 불안 | 그래프·잠금 검증 안정 | CPU는 한가한데 벽시계 증가 |
| 캐시 키 | 툴체인 가중치 상향·일시적 재사용 중단 | 잠금 해시+변경 해시+Runner OS | 헤비 전용 접두사·읽기 전용 미러 |
| 지역 | 단일 manifest 세대로 시작 | 미러 지연 허용, 주 접두사 쓰기 금지 | 프라이머리 쓰기·위성 읽기 |
| 전체 복귀 | 보호 브랜치 병합 후 첫 그린 전 | 주간 대조 전체 | 대규모 Xcode 전환 주간 |
재현 가능한 입력을 먼저 고정한 뒤 affected를 조정합니다.
공유 풀 SSH가 전제입니다. 대양 간 바이트는 아티팩트 가이드의 리스와 manifest를 적용하십시오.
입력 삼중항: 커밋, 잠금 다이제스트, xcodebuild 지문을 헤더에 고정합니다.
단일 그래프: 고정 라벨에서 파싱해 영향 패키지 목록을 artifact로 냅니다.
전체 임계: codegen·공유 커널·툴체인 업그레이드 목록에 닿으면 전체로 단락하고 감사 코드를 남깁니다.
프라이머리 쓰기: 주 빌더만 쓰고 위성은 읽기 전용입니다.
팬아웃 검증: 해시·크기 이중 검증 후 포인터를 전환합니다.
재시도·복귀: 네트워크는 지수 백오프, 체크섬은 인시던트 후 다음 커밋 전체 강제입니다.
CACHE_KEY="${CI_COMMIT_SHORT_SHA}:${LOCKFILE_SHA256}:$(xcodebuild -version | shasum -a 256 | cut -c1-12)"
export TURBO_REMOTE_CACHE_SIGNATURE="${CACHE_KEY}"
echo "affected=$(npx turbo run build --dry=json | jq -r '.packages | length')" > "${CI_PROJECT_DIR}/affected.meta"
안내: Turbo는 Nx·Bazel로 바꿀 수 있습니다. 단일 권위 그래프와 단조 키가 핵심입니다.
두 PR이 공유 패키지를 움직이면 접두사가 뒤섞입니다. 쓰기 주체는 CI 프라이머리로 제한합니다.
시트 락의 lease id를 경로에 넣고 관측 가능한 태스크 체인 봉투에 affected 수와 전체 단락 플래그를 실습니다.
주의: 쓰기 권한을 닫기 전에 다지역 팬아웃을 열지 마십시오.
단일 라이터: 접두사당 동시에 하나의 리스만 씁니다.
소비 조건: manifest 세대가 current일 때만 컴파일을 시작합니다.
인적 게이트: 체크섬이 연속 두 번 실패하면 affected를 동결하고 서명된 전체 그린까지 중지합니다.
아래는 계획용 기본값이며 SLA가 아닙니다.
야간 affected와 IDE 인덱스가 같은 디스크를 쓰면 CPU만으로는 오진합니다.
| 팀 신호 | 시작 자세 | 팬아웃 |
|---|---|---|
| 소규모 | 단일 리전 주 빌드+로컬 affected | 팬아웃 낮음 |
| 다중 PR | 프라이머리 쓰기·위성 읽기 | rsync 또는 객체 스토리지와 결합 |
| 야간 에이전트 | 헤비 노드를 대화형 풀과 분리 | 공유 키 고갈 방지 |
개인 노트북을 게이트웨이로 쓰면 수면·대역폭 변동으로 동시에 손실이 납니다.
계약화된 노드와 감사 가능한 대역폭이 필요한 iOS 지속 배포와 야간 AI 부하는 VpsMesh Mac Mini 클라우드 대여가 보통 더 나은 선택입니다. 히트율과 큐 깊이를 같은 검토 표에 둘 수 있습니다.