2026 Mac 클라우드 CI: 여러 Xcode·iOS SDK 공존과 xcode-select, 디스크, Job 분기(Linux VPS가 못 대체하는 이유)

한 대 Mac 클라우드에 Xcode를 여러 벌 두면 디스크·키체인·로그에서 조용히 무너집니다. 단일 고정과 공존 판단표, xcode-select·DEVELOPER_DIR 다섯 단계, DerivedData·시뮬레이터 임계값, 병렬 안전역, 공증·TestFlight 분리 FAQ와 Runbook용 수치를 정리합니다.

Mac 클라우드 CI에서 여러 Xcode 버전을 다루는 파이프라인 개념도

목차

1. 문제: 여러 Xcode는 apt-get이 아니다

Linux는 대안 컴파일러 전환이 쉽지만 macOS 빌드 호스트는 Apple 공식 체인과 로그인 키체인이 강하게 묶여 부하 시에만 터집니다.

  1. 디스크·캐시: 각 Xcode는 SDK·시뮬레이터 런타임·색인을 포함합니다. DerivedData를 Job 간 공유하고 보존 규칙이 없으면 일주일 내 수십 GB가 사라지고 컴파일 버그처럼 보이는 실패가 납니다.
  2. 병렬·키체인: 동일 macOS 사용자로 xcodebuild를 병렬 실행하면 같은 로그인 키체인과 서명 컨텍스트를 둘러씁니다. 메이저 Xcode를 늘리면 로그 상단에 활성 developer 경로를 찍지 않으면 상관관계가 안 잡힙니다.
  3. 암묵 경로 드리프트: /Applications/Xcode.app 고정이나 GUI 마지막 선택에 의존하면 야간과 릴리스가 다른 컴파일러로 흘러 재현성이 깨집니다.

대응은 정책입니다. 단일 버전을 골든 이미지에 박거나 명시적 이름의 번들을 깔고 환경 변수·Runner 태그로 Job을 잠그며 developer 디렉터리는 파이프라인 버전별 불변 다이제스트처럼 다룹니다.

2. 판단표: 고정 vs 공존

아키텍처 리뷰용 표입니다.

전략적합리스크운영
단일 Xcode 고정제품 한 줄, 릴리스 열차 정렬, 업그레이드 창 통제메이저는 점검 창이나 새 풀 필요이미지 매니페스트에 xcodebuild -version 기록, 미등록 스택 Job 거절
이중 스택(LTS+최신)낮은 최소 OS와 최신 SDK 동시디스크·시뮬레이터 거의 배Xcode_16.2.app 식 명명, Job마다 DEVELOPER_DIR
세 벌 이상에이전시·멀티 테넌트·레거시 꼬리큐·트리아지 폭증태그로 풀 분할·대당 병렬 상한·스냅샷
경험칙: Xcode 추가마다 Runner 풀 또는 오너를 붙인다. Mac App Store 클릭 증가는 용량 과제로 취급.

3. Linux 클라우드가 못 대체하는 이유

비교 축은 vCPU 가격이 아니라 Apple 공식 개발 체인을 합법적으로 끝까지 돌릴 수 있는가입니다.

관점Linux VPS·범용 클라우드Apple Silicon Mac 클라우드
공식 Xcode·SDK문서대로 풀 Xcode·시뮬·기기 서명을 돌릴 지원 경로 없음네이티브 xcodebuild, Simulator, 서명, 공증 도구
행동 일치크로스·원격 우회는 macOS 한정 엣지 재현이 어렵다데스크에 가까워 CI 전용 실패 감소
운영API·컨테이너에 강함SSH·launchd·스냅샷·골든 이미지가 Linux 습관에 맞음

4. 다섯 단계: 경로, 환경, 태그, 정리, 검증

  1. 번들 명시: /Applications/Xcode_16.2.app 형태로 덮어쓰기 방지, 라이선스는 컴플라이언스 절차로.
  2. developer 디렉터리: CI는 DEVELOPER_DIR export 우선으로 세션 경쟁 회피.
  3. 태그 정합: xcode-16.2 라벨과 GitHub/GitLab tags 고정.
  4. 캐시 분리: DERIVED_DATA_PATH를 브랜치나 Job ID 단위, 오프피크 정리, 시뮬레이터는 필요 기종만.
  5. 검증: 업데이트 후 -showsdks·클린·아카이브 스모크와 세 줄 메타데이터 기록 후 본 큐 오픈.

예시(경로 교체):

xcode-select -p sudo xcode-select -s /Applications/Xcode_16.2.app/Contents/Developer export DEVELOPER_DIR=/Applications/Xcode_16.2.app/Contents/Developer xcodebuild -version xcodebuild -showsdks

5. 참고 수치: 디스크, 병렬, 텔레메트리

6. FAQ: 업그레이드, 공증, TestFlight

CI는 xcode-select만? 아니오. 다중 Job 공유 호스트에선 전역 전환이 취약합니다. Job별 DEVELOPER_DIR과 Runner 태그를 권장.

업데이트 직후 공증 실패: 공증을 별 층으로 API 키·entitlements·notarytool부터 확인, SDK 탓으로 돌리지 말 것.

여러 스택에서 TestFlight Job 분리? 예. 컴파일·아카이브, 공증, 업로드를 나누고 동일 툴체인 트리플을 로그에 남깁니다.

노트북은 수면·디스크 고갈을 부르고 Linux는 합법 Xcode 파이프라인을 끝내기 어렵습니다. 예측 가능한 병렬·비밀·스냅샷을 갖춘 운영에는 VPSMAC 전용 Mac 클라우드가 맞고 확장 시 구성 가이드와 함께 읽으세요.