2026 대형 Monorepo를 다지역 Mac Mesh에서 빌드: 영향 범위 빌드, 캐시 키, 팬아웃, 트리거 규칙

전체 대 affected · 캐시 키 · 읽기 전용 팬아웃 · 6단계 게이트

2026 Mac Mesh Monorepo 영향 범위 빌드

여러 대의 원격 Mac Mesh에서 대형 Monorepo를 돌리는 팀은 캐시 키 드리프트, affected 그래프와 Runner 라벨 불일치, 반쯤 쓴 캐시로 큐를 태우곤 합니다. 본문은 전체 빌드, affected, 전용 헤비 노드 결정표와 재현 가능한 입력 경계, 읽기 전용 팬아웃, 6단계 게이트를 제시합니다. 아티팩트 팬아웃Merge Queue와 함께 읽으십시오.

01

다지역 Mac Mesh에서 affected가 ‘가짜 그린’으로 보이는 이유

영향 범위 빌드는 변경 그래프, 잠금 파일, 툴체인 지문의 정렬에 의존합니다. 대화형 세션과 무인 작업이 같은 접두사를 공유하면 유령 의존성이 키를 오염시켜 지표에 잘 드러나지 않습니다.

캐시·아티팩트는 바이트 경로, 본문은 그래프 가지치기트리거입니다.

  1. 01

    그래프·라벨 드리프트: Runner 라벨마다 워크스페이스 루트가 달라 affected 집합이 갈립니다.

  2. 02

    잠금 파일 누락: 해석은 바뀌었는데 오래된 tarball이 히트합니다.

  3. 03

    툴체인 지문 없음: 소규모 Xcode 차이가 manifest에 없습니다.

  4. 04

    팬아웃·계산 혼선: 읽기 전용 소비자가 캐시 접두사에 씁니다.

  5. 05

    전체 복귀 조건 없음: 공유 커널·codegen 변경에도 affected만 고정합니다.

02

전체, affected, 전용 헤비 노드 트리거 표

다지역 원격 Mac 풀의 Monorepo CI에 맞춘 축입니다.

전체 우선affected 우선헤비 분리
변경 유형코드 생성, 빌드 스크립트, 공유 네이티브 경계단일 앱 패키지 UI·카피야간 배치와 주간 PR이 같은 풀 경쟁
신호affected 연속 실패·통합 테스트 불안그래프·잠금 검증 안정CPU는 한가한데 벽시계 증가
캐시 키툴체인 가중치 상향·일시적 재사용 중단잠금 해시+변경 해시+Runner OS헤비 전용 접두사·읽기 전용 미러
지역단일 manifest 세대로 시작미러 지연 허용, 주 접두사 쓰기 금지프라이머리 쓰기·위성 읽기
전체 복귀보호 브랜치 병합 후 첫 그린 전주간 대조 전체대규모 Xcode 전환 주간

재현 가능한 입력을 먼저 고정한 뒤 affected를 조정합니다.

03

커밋에서 팬아웃까지 여섯 단계 게이트

공유 풀 SSH가 전제입니다. 대양 간 바이트는 아티팩트 가이드의 리스와 manifest를 적용하십시오.

  1. 01

    입력 삼중항: 커밋, 잠금 다이제스트, xcodebuild 지문을 헤더에 고정합니다.

  2. 02

    단일 그래프: 고정 라벨에서 파싱해 영향 패키지 목록을 artifact로 냅니다.

  3. 03

    전체 임계: codegen·공유 커널·툴체인 업그레이드 목록에 닿으면 전체로 단락하고 감사 코드를 남깁니다.

  4. 04

    프라이머리 쓰기: 주 빌더만 쓰고 위성은 읽기 전용입니다.

  5. 05

    팬아웃 검증: 해시·크기 이중 검증 후 포인터를 전환합니다.

  6. 06

    재시도·복귀: 네트워크는 지수 백오프, 체크섬은 인시던트 후 다음 커밋 전체 강제입니다.

bash
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로 바꿀 수 있습니다. 단일 권위 그래프와 단조 키가 핵심입니다.

04

동시 편집과 읽기 전용 팬아웃

두 PR이 공유 패키지를 움직이면 접두사가 뒤섞입니다. 쓰기 주체는 CI 프라이머리로 제한합니다.

시트 락의 lease id를 경로에 넣고 관측 가능한 태스크 체인 봉투에 affected 수와 전체 단락 플래그를 실습니다.

주의: 쓰기 권한을 닫기 전에 다지역 팬아웃을 열지 마십시오.

  1. A

    단일 라이터: 접두사당 동시에 하나의 리스만 씁니다.

  2. B

    소비 조건: manifest 세대가 current일 때만 컴파일을 시작합니다.

  3. C

    인적 게이트: 체크섬이 연속 두 번 실패하면 affected를 동결하고 서명된 전체 그린까지 중지합니다.

05

티켓에 올릴 수 있는 매개변수

아래는 계획용 기본값이며 SLA가 아닙니다.

야간 affected와 IDE 인덱스가 같은 디스크를 쓰면 CPU만으로는 오진합니다.

  • 주간 전체 대조: 유령 의존을 잡기 위해 주 1회 이상 전체 또는 트렁크 대조를 둡니다.
  • 파싱 예산: PR 예산의 합의 비율을 넘기면 샤딩하거나 전용 Runner로 옮깁니다.
  • 세대 단조성: 툴체인 업그레이드는 반드시 세대를 올리고 모든 소비 리전에 알립니다.
팀 신호시작 자세팬아웃
소규모단일 리전 주 빌드+로컬 affected팬아웃 낮음
다중 PR프라이머리 쓰기·위성 읽기rsync 또는 객체 스토리지와 결합
야간 에이전트헤비 노드를 대화형 풀과 분리공유 키 고갈 방지

개인 노트북을 게이트웨이로 쓰면 수면·대역폭 변동으로 동시에 손실이 납니다.

계약화된 노드와 감사 가능한 대역폭이 필요한 iOS 지속 배포와 야간 AI 부하는 VpsMesh Mac Mini 클라우드 대여가 보통 더 나은 선택입니다. 히트율과 큐 깊이를 같은 검토 표에 둘 수 있습니다.

FAQ

자주 묻는 질문

코드 생성, 빌드 스크립트, 공유 네이티브, 툴체인 업그레이드, 보호 브랜치 병합 후 첫 그린 전에는 전체가 안전합니다. 세부는 아티팩트 매트릭스를 보십시오.

커밋 또는 변경 다이제스트, 잠금 해시, 툴체인 지문, Runner OS, 팬아웃 시 세대·리스 ID입니다. 리전은 주문 페이지를 확인하십시오.

고객 센터의 원격·네트워크 항목과 가격 페이지를 읽으십시오.