2026년 독점 원격 Mac CI: git blobless·얕은 클론·sparse-checkout과 LFS·서브모듈——페치 소요, 캐시 적중과 SSH 파이프라인 checkout 실패의 재현 가능 의사결정 매트릭스 + FAQ
원격 Mac 한 대를 독점해 CI를 돌릴 때 「저장소 클론」은 일회 비용이 아니라 매 파이프라인마다 내는 세금입니다. 왕복·객체 다운로드·LFS·서브모듈 재귀·Runner 작업 디렉터리의 캐시 적중 여부가 겹칩니다. 이 글에서는 blobless·얕은 클론·희소 체크아웃과 LFS·서브모듈을 한 매트릭스에 두고, SSH 환경에서 checkout 실패를 재현 가능한 순서로 분류합니다. 노드 수와 큐를 함께 고민 중이라면 먼저
iOS/macOS CI 자원치: 단대 독점 Mac vs 다대 독점를 참고하세요.
1. 각 옵션이 해결하는 문제
- Blobless clone(
--filter=blob:none):커밋 그래프와 트리를 먼저 받고 blob은 필요 시에만 가져옵니다. 대형 단일 저장소에서 일부 경로만 빌드할 때 유리하지만, 이후 단계가 누락된 blob을 실제로 당겨오지 않으면 「체크아웃은 됐는데 컴파일에 파일이 없다」는 거짓 음성이 납니다. - 얕은 클론(
--depth):히스토리를 잘라 객체량을 줄입니다. 대가로 merge base·일부git describe·서브모듈 고정 SHA 의미가 약해질 수 있어, CI에서 fetch 깊이나 태그 전략을 문서화해야 합니다。 sparse-checkout:작업 트리에 선언한 경로만 펼칩니다. blobless와 함께 쓰는 경우가 많고, 빌드 스크립트가 가정하는 숨은 경로를 allowlist에 넣지 않으면 파일 누락이 불규칙하게 납니다。- Git LFS:포인터는 Git에, 큰 바이너리는 LFS 저장소에 있습니다. CI에서는
git lfs pull·자격 증명·대역폭을 예약하고 캐시 키 설계와 맞춰야 합니다。 - 서브모듈:클론 한 번이 원격 상호작용 N번으로 바뀝니다. SSH 인증·재귀 깊이·
.gitmodulesURL 재작성이 파이프라인 실패의 상위 원인입니다。
2. 재현 가능 의사결정 매트릭스(독점 Mac CI)
아래 표는 「저장소 형태 × 목표」별 1순위 조합입니다. SSH로 원격 Mac에서 실행할 때는 비대화형 자격 증명과 동일 사용자가 Runner 작업 디렉터리에 접근 가능이라는 두 제약을 동시에 만족해야 합니다。
| 시나리오 | 권장 전략 | 주요 리스크/완화 |
|---|---|---|
초대형 단일 저장소, ios/와 툴체인만 필요 |
blobless + sparse +(선택)얕음 | 리스크:스크립트가 트리 밖 경로 참조 → 빌드 단계에서야 실패。완화:sparse 규칙에 경로를 문서화하고 CI 첫 단계에서 디렉터리 탐지。 |
| 중간 규모, 감사·버전 설명을 위해 전체 이력 필요 | 전체 clone 또는 blobless 비얕음 | 리스크:얕은 이력으로 describe 실패。완화:릴리스 job만 전체 fetch。 |
| LFS 자산(아트·모델) | 일반 clone + 명시적 git lfs fetch/checkout |
리스크:자격·대역폭。완화:LFS 객체 캐시 디렉터리와 job 격리 키(브랜치·락 파일 해시)。 |
| 다중·중첩 서브모듈 | submodule update --init --recursive + SSH 단일 신원 |
리스크:SSH 호스트 키·deploy key 권한·잘못된 서브모듈 URL。완화:insteadOf와 알려진 호스트 지문 고정。 |
| 잦은 작은 커밋, 「체크아웃→컴파일」 최소화 | 영구 작업 트리 + git fetch + reset --hard |
리스크:더러운 작업 트리 오염。완화:job 종료 시 정리 또는 N회마다 전체 재클론。 |
3. 페치 소요와 「캐시 적중」의 의미
독점 Mac에서는 캐시가 보통 세 층으로 나뉘며, 용어를 섞지 않는 것이 좋습니다。
- Runner/플랫폼 캐시:키로 디렉터리를 복원합니다(의존성·DerivedData 등). Git 객체 DB 재사용과는 무관할 수 있습니다。
- 로컬 미러 또는 bare(
git clone --mirror+ 참조 clone):고빈도 빌드에 적합하고 외부 왕복을 줄입니다. 디스크 할당과 동시 job 격리가 필요합니다。 - 객체 단위 증분:
fetch는 새 커밋만 가져옵니다. blobless에서는 파일을 처음 건드릴 때 blob을 당겨와 로그에 「체크아웃은 빠른데 컴파일 직전에 갑자기 느려짐」으로 보일 수 있습니다。
같은 Mac에서 장기 연결·토큰 주입이 겹치면 SSH 대화형 세션과 launchd/Runner 환경 차이로 「자격은 보이는데 job에는 안 보인다」가 커집니다. 게이트웨이·환경 분리 분류는 원격 Gateway 페어링·릴레이 토큰과 SSH 재현 FAQ와 대조한 뒤, 미러 저장소와 정리 책임을 플랫폼 캐시에 둘지 bare 미러에 둘지 정하면 됩니다。
자체 호스팅 Runner 운영·노드 선택을 한 번에 정리하려면 GitHub Actions 자체 호스팅 macOS Runner 운영 의사결정도 함께 두면 클론 정책과 장애 대응이 같은 런북에 묶입니다。
4. SSH 파이프라인:checkout 실패 재현 분류표
아래 순서는 환경을 먼저 배제하고 Git 논리는 나중이라는 의도로, 런북에 그대로 넣기 쉽습니다。
| 현상 | 우선 확인 | 흔한 근본 원인 |
|---|---|---|
Permission denied (publickey) |
파이프라인 사용자 vs 수동 SSH 사용자의 HOME 일치;ssh -T git@host |
launchd/LaunchAgent에서 셸 프로파일이 안 올라와 ssh-agent·키가 주입되지 않음。 |
Host key verification failed |
known_hosts 위치·권한 |
CI 사용자 홈이 읽기 전용이거나 job마다 작업 트리가 비워짐;전역 또는 미러 이미지에 지문을 미리 넣어야 함。 |
| 서브모듈 디렉터리가 비어 있음 | git submodule status;HTTPS vs SSH URL |
update 누락 또는 다른 자격 증명 세트;insteadOf 미적용。 |
| LFS 파일이 수 KB 포인터 | git lfs env;endpoint·자격 |
lfs 미설치 또는 pull 누락;또는 CI가 오래된 포인터 상태를 캐시。 |
| sparse 이후 컴파일에서 헤더 누락 | sparse 규칙과 include 경로;git symlink 의존 여부 | 규칙이 너무 좁음;macOS 대소문자·심볼릭 링크와 Linux 혼용 시 차이。 |
5. FAQ
Q1:blobless가 항상 전체 clone보다 CI에 맞나요?
아닙니다. 빌드가 넓은 경로를 무작위로 건드리면(예:전체 grep·메타데이터 스캔)blob 지연 fetch가 총 시간을 늘릴 수 있습니다. 대표 파이프라인으로 「fetch+checkout+컴파일」 구간을 각각 재고해 결정하세요。
Q2:얕은 클론이 CocoaPods/SPM 해석을 깨뜨리나요?
그럴 수 있습니다. 일부 도구는 전체 태그나 이력에 의존합니다. 「릴리스 빌드」와 「PR 빌드」 fetch 깊이를 문서에 고정하고, 실패 로그에서 「이력 부족」과 「의존성 손상」을 구분할 수 있게 하세요。
Q3:독점 Mac에서 Git 부하를 파일시스템 캐시로 때우나요?
반복 클론 감소와 LFS 대 객체 캐시 분리가 먼저입니다. APFS 로컬 복사는 이미 빠르고, 병목은 대개 원격과 TLS입니다. 초대형 저장소는 커널 튜닝보다 bare 미러 + 참조 clone이 효과적인 경우가 많습니다。
독점 원격 Mac mini에서 클론 전략이 더 잘 맞는 이유
blobless·sparse·LFS·서브모듈 규율은 모두 경로·사용자·자격 증명이 여러 빌드에 걸쳐 일관되게 유지될 때 빛을 봅니다. Apple 실리콘 Mac mini를 독점 CI 노드로 쓰면 디스크 배치와 권한 모델이 안정적이고, 멀티테넌트처럼 같은 작업 공간을 빼앗는 일이 적습니다. macOS 네이티브 Unix, Homebrew, Git·SSH·ssh-agent 트러블슈팅 경로도 명확합니다. M 시리즈는 지속적인 git fetch·컴파일·코드 서명이 섞인 부하에서도 전력 효율이 좋아 장시간 온라인에 적합하고, Gatekeeper·SIP·FileVault를 CI 전용 계정과 결합하면 최소 권한·감사에 유리합니다。
「재현 가능한 클론 + 예측 가능한 캐시」를 팀 런북에 넣고 싶다면, 전용 원격 Mac mini M4는 2026년에도 가성비 좋은 출발점입니다. 홈에서 요금을 확인한 뒤, 이 매트릭스를 파이프라인 템플릿과 장애 매뉴얼에 합치면 됩니다。
Git·SSH CI를 독점 원격 Mac에서 굴리시나요?
SSHMac 원격 Mac mini
실제 Apple 실리콘에서 위 매트릭스를 적용하고, 예측 가능한 SSH로 캐시·미러·Runner 경계를 고정하세요. 노트북 절전·발열 변수를 줄입니다.