DevOps / CI·CD
2026년 4월 11일
임대 클라우드 Mac에서 Xcode SwiftPM 레지스트리·resolve·CI 캐시(2026)
MacXCode Engineering Team · 약 16분
싱가포르·일본·한국·홍콩·미동부의 Apple Silicon 빌드 호스트에서 실패는 종종 컴파일러가 아니라의존성 가져오기입니다. SwiftPM vs CocoaPods, 병렬 xcodebuild, 셀프호스트 Runner와 함께 읽으세요.
리전이 resolve에 미치는 영향
- 이그레스 경로와 IP 허용이 지역마다 다릅니다.
- Git LFS·바이너리 산출물은 RTT에 민감합니다.
- 다중 테넌트는 전역 SPM 캐시 공유를 피하세요.
원칙: 릴리스 브랜치는
Package.resolved 커밋, main은 읽기 전용 resolve.헤드리스 인증
CI 시크릿 → ~/.netrc, 권한 600, 작업 후 삭제.
잠금 정책
| 브랜치 | 정책 | CI |
|---|---|---|
main | 잠금 필수 | 그래프 변경 시 실패 |
| 피처 | 봇 업데이트 | PR로 잠금 갱신 |
| 라이브러리 | 선택 | 임시 잠금 생성 |
경로
| 경로 | 역할 | 메모 |
|---|---|---|
SourcePackages | 소스 | 작업별 분리 |
| DerivedData | 인덱스 | 병렬 한도 |
| 글로벌 SPM | 다운로드 | 읽기 전용 워밍 |
CI 단계
swift package resolve — 원격 Archive와 동일 사용자에서 서명·resolve 정렬.
리전 매트릭스
| 관점 | 측정 | 완화 |
|---|---|---|
| RTT | TTFB | 미러 |
| GitHub | 429 | 백오프 |
| 디스크 | fs_usage | 별 볼륨 |
FAQ
| 질문 | 답 |
|---|---|
| 캐시 끄기? | 손상 조사 시에만. |
| Xcode Cloud? | 비교 글 참고. |
| 결정성 | CI에서 Package.resolved 체크섬 검증. |