플랫폼 엔지니어와 iOS 릴리스 리드가 2026년에 빌드 풀을 싱가포르, 일본, 한국, 홍콩, 미국 동부, 미국 서부로 펼치면 Git과 레지스트리는 맞춰 두었는데도 동일 commit이 호스트 A에서는 통과하고 호스트 B에서는 코드 서명이나 컴파일러 매크로에서 갈라지는 경우를 자주 봅니다. 원인은 Xcode 패치 수준, Command Line Tools, 전역 Ruby·CocoaPods 스택, DerivedData 마운트 지점, 로그인 키체인 뷰가 계약적으로 고정되지 않았을 때가 많습니다. 본 글에서는 RCA에 바로 쓸 드리프트 여섯 분류, 스냅샷·재설치·전용 CI 사용자를 비교하는 표 두 장, 복사 가능한 헬스 스니펫, 여섯 단계 런북, 대시보드용 단단한 지표 세 가지를 정리합니다. Fastlane·인증서 가이드, Git·아티팩트 근접 매트릭스, 셀프호스트 러너 체크리스트와 함께 읽으시기 바랍니다.
풀링된 원격 Mac은 노트북과 다릅니다. 호스트가 바뀌고 스냅샷이 되돌아가며 여러 사람이 로그인합니다. 「재현 가능」을 측정할 기준선이 없으면 분류만으로 인력이 소모됩니다. 아래 여섯 가지 통증 유형을 변경 첨부에 넣고 러너 태그·대여 피크와 같은 페이지에서 검토하시기 바랍니다.
Xcode.app이 공존하는데 CI 사용자가 xcode-select를 고정하지 않아 Swift 툴체인, 링커, SDK 헤더가 야간 잡마다 조용히 바뀝니다.pod install이 잠금 파일을 따르더라도 컴파일 타임 매크로가 갈라질 수 있습니다.ssh 세션은 키체인, 프록시, 트러스트 저장소가 다릅니다. CI 사용자와 대화형 디버깅 계정을 섞으면 「수동으로는 레인이 되고 무인에서는 실패한다」가 납니다.이 항목들을 Fastlane 글의 서명 인벤토리 위에 올립니다. 본 차원은 툴체인과 파일 시스템 뷰를, 그 글은 서명·업로드 체인을 맞춥니다. 한쪽이 비면 리뷰 창에서 터집니다.
디스크 수준 스냅샷은 일일 거버넌스를 대체하지 않습니다. 알려진 양호한 골든 이미지로 롤백할 때 강하고 임시 수정을 상쇄할 때는 약합니다. 표는 조달 언어로 쓰시기 바랍니다.
| 전략 | 신호 | 이점 | 리스크·계약 메모 |
|---|---|---|---|
| 골든 이미지로 스냅샷 롤백 | 패치 물결 뒤 균일한 실패, 분 단위 복구 필요 | Xcode+CLT+기준 gem 등 고정 조합 복원 | 오래된 스냅샷은 보안 수정을 놓칩니다. 유효 기간과 롤링 업그레이드 창을 정의합니다 |
| 제자리 증분 수리 | 단일 호스트 드리프트(잘못된 xcode-select, 삭제된 캐시) | 비용이 낮고 원인 추적에 유리 | 공유 로그인이 수정을 다시 오염시킵니다. 전용 계정과 짝을 이룹니다 |
| 전용 CI 사용자, GUI 공유 없음 | 장수명 풀, 높은 동시성, 감사 요구 | 홈·키체인 분리, 재현성 강화 | 부트스트랩 비용이 큽니다. SSH·VNC 접근 정책과 맞춥니다 |
| 버스트 호스트용 표준 「첫 명령」 | 매일·매주 풀에 들어오는 머신 | 접속 직후 몇 분 안에 검증을 몰아넣습니다 | 검사를 건너뛰면 대기열 전체로 드리프트가 퍼집니다 |
멀티프로젝트 용량 체크리스트와 같이 디스크 대기와 주간 성장이 CPU 사용률에서 벗어나 있으면 먼저 파생 데이터 정책을 고친 뒤 M4 Pro나 두 번째 버스트 호스트를 논의합니다.
| 신호(2주) | 유력 원인 | 첫 조치 | 대여·하드웨어 연결 |
|---|---|---|---|
| 아카이브 루트·DerivedData 성장이 계획을 넘기고 대기가 높음 | 핫 데이터가 잘못된 티어(네트워크 공유) | 로컬 SSD 경로로 옮기고 보존·정리 잡을 둡니다 | 1TB→2TB 또는 아카이브 전용 노드 |
| 첫 빌드는 느리고 이후 빠르나 잡 간 불안정 | 캐시 권한 또는 동시 기록자 | 잡별 DerivedData 접두사 또는 사용자 분리 | 버스트 호스트는 더 엄격한 분리가 필요합니다 |
| SPM 해석이 간헐적으로 실패 | 이그레스·레지스트리 리전 불일치 | 아티팩트 근접·미러에 맞춥니다 | 코어보다 네트워크입니다 |
| 정리 직후 곧 용량이 돌아옴 | 모노레포·넓은 시뮬레이터 행렬 | 병렬도를 줄이거나 풀을 나눕니다 | 메모리 대역폭을 쫓기 전에 잡 폭을 줄입니다 |
# Health: active developer dir and Xcode build (run as CI user) xcode-select -p xcodebuild -version # Signing identities visible to CI (pairs with Fastlane article) security find-identity -v -p codesigning # DerivedData location (custom prefix must match team docs) defaults read com.apple.dt.Xcode IDECustomDerivedDataLocation 2>/dev/null || echo "(default ~/Library/Developer/Xcode/DerivedData)"
참고:xcodebuild -version, CLT 수준, xcode-select -path를 러너 태그나 계약 ID와 같은 줄에 보관하십시오. 「최신 Xcode 쓰라」는 위키 한 줄보다 훨씬 집행하기 쉽습니다.
SSH·VNC는 접근 결정 가이드를 따릅니다. 러너를 병렬 등록한다면 태그와 동시성을 러너 체크리스트에 코드화하십시오.
이 지표는 「플레이키」를 실행 가능한 통에 나누며 멀티리전·대여 기간 가이드의 스토리지 필드와도 맞춥니다.
xcodebuild -version과 xcode-select -p를 해시하고 임계를 넘으면 대기열을 동결합니다.또한 「CI 사용자가 대화형 GUI 로그인과 동시에 돌아간다」 불리언을 추적하십시오. 계속 참이면 키체인류 사고를 가정하고 임시 재부팅 대신 보안 정책과 함께 검토합니다.
SPM 해결 시간을 git fetch 시간 옆에 그리면 추세가 갈라질 때 아티팩트 근접을 다시 열지 이 환경 기준선 글 안에 머물지 판단합니다.
개인 Mac은 감사에 불리합니다. 절전 정책, 예고 없는 업그레이드, 보이지 않는 전역 gem 스택이 끊임없이 드리프트합니다. 리전을 가로지르는 게이트 릴리스 풀에서는 「한 번 빌드됐다」와 「매번 같은 방식으로 빌드된다」는 다른 SLA입니다. 계약급 Apple Silicon 빌드에는 전용 베어메탈, 멀티리전 선택, 환경 지문을 송장과 같은 스프레드시트에 묶을 수 있는 조합 가능한 대여 조건이 필요합니다.
파편화된 데스크톱과 일회성 대여만으로는 무인 자동화에도 약하며 DerivedData 정책·전용 CI 계정이 없으면 버스트 머신이 결함을 본류로 증폭합니다. 안정적이고 감사 가능하며 버스트에 강한 빌드 평면이 필요한 팀에게는 전문 Mac 클라우드가 임시 하드웨어보다 유리한 경우가 많습니다. MACCOME은 싱가포르, 일본, 한국, 홍콩, 미국 동부·서부에서 Mac mini M4·M4 Pro 베어메탈 노드를 유연한 조건으로 제공합니다. 베이스라인·버스트 층을 레지스트리·서명 체인에 맞춘 뒤 대여 요금과 리전별 페이지로 확정하십시오.
파일럿 패턴: 저장소·레지스트리와 같은 리전 패밀리에서 단기 대여하고 헬스 블록과 2주 베이스라인을 돌린 뒤 월간·분기로 확정합니다. 「저렴한 리전」 스왑으로 지문 재현성을 잃지 않도록 합니다.
FAQ
Fastlane 글과 어떻게 다릅니까?
Fastlane은 인증서, 프로파일, 업로드 피크를 맞춥니다. 본 글은 툴체인, 파생 디렉터리, 키체인 뷰를 맞춥니다. 상업 조건은 대여 요금과 멀티 리전 선택을 같은 마일스톤에서 여십시오.
클린 호스트에서도 실패하면 무엇을 먼저 봅니까?
먼저 아티팩트 근접 매트릭스로 레지스트리와 이그레스를 검증합니다. 의존성이 재현 가능하면 xcode-select, DerivedData, 전용 CI 사용자로 돌아갑니다.
러너 체크리스트와 어떻게 짝을 이룹니까?
러너는 작업을 태그와 시크릿 격리에 매핑합니다. 본 글은 각 태그 뒤의 지문을 정의해 한 라벨 아래에서 서로 다른 Xcode 패치 수준이 섞이지 않게 합니다. 접근 문구는 고객 센터를 참고하십시오.