대상: 국경 링크원격 Mac CI를 돌리는 빌드 엔지니어. 요약: shallow로 베이스를 고정하고 bundle 슬라이스로 객체를 이입한 뒤 alternates로 미러를 공유합니다. 표·카드·명령·캐시 키가 한 흐름입니다. 연관: OCI 매트릭스, Gradle 캐시, .

객체 전송이 흔들릴 때 반복되는 세 가지 병목

  1. 지터: 팩 협상이 길어지면 중간 끊김 비용이 큽니다.
  2. 얕은 범위: 브랜치를 넓히면 캐시 키가 흔들립니다.
  3. 중복: 워커마다 풀 미러를 복제하면 디스크와 링크가 낭비됩니다.

국경 불안정 대역폭 시나리오에서 왜 팩 전송이 자주 실패하는가

꼬리 지연이 길면 속도가 잠깐 나와도 타임아웃이 납니다. 얕은 클론으로 트리를 고정하고 필요한 커밋만 번들로 밀어 넣는 이중 단계가 안전합니다. 재시도 지표와 번들 검증 실패를 한 화면에 올려 원인을 나눕니다.

번들 슬라이스 전략으로 큰 푸시를 잘게 나누기

기간이 명확하면 주간 슬라이스가 읽기 쉽습니다. 파일명에 날짜를 붙이고 검증 실패 시 접미사만 바꿉니다.

git bundle create weekly-$(date +%Y%m%d).bundle --since=1.week --all
git bundle verify weekly-$(date +%Y%m%d).bundle

객체 저장소 재사용과 alternates로 디스크·링크 비용 줄이기

공유 미러의 objects 경로를 alternates 한 줄로 가리키면 팩 재전송을 줄입니다. 미러가 밀리면 번들로 빈 구간을 채웁니다.

git clone --reference /Volumes/cache/git-mirror/REPO.git \
  --dissociate --filter=blob:none --single-branch --depth=1 \
  https://git.example.com/REPO.git work

전송 방식 비교와 의사결정 매트릭스

방식 적합 리스크
직접 fetch 안정 링크·캐시 있는 상시 러너 국경 지터에 협상 반복
번들 이입 대용량 델타를 파일로 검증 생성 시각과 러너 시각 차
shallow plus 번들 초기 최소 이후 보강 깊이·브랜치 미기록 시 캐시 흔들림

대역폭 불안

슬라이스 우선·짧은 타임아웃·낮은 동시성.

재현성

번들 해시·깊이·브랜치를 캐시 키에 넣습니다.

복붙 가능한 실행 순서와 검증 단계

  1. 미러: git clone --mirror 를 공유 스토리지에 둡니다.
  2. 얕은 작업: git clone --filter=blob:none --single-branch --depth=1 로 브랜치를 고정합니다.
  3. 번들: git fetch ./delta.bundle '+refs/*:refs/remotes/bundle/*' 로 합칩니다.
  4. 검증: git rev-parse HEAD 와 기대 해시를 맞추고 git cat-file -t 로 타입을 봅니다.
  5. 로그: 번들 파일명과 depth 를 남깁니다.
git -c http.lowSpeedLimit=1000 -c http.lowSpeedTime=60 \
  fetch --prune --no-tags origin

실패 재시도 파라미터와 CI 캐시 키 설계

저속 한계로 무한 대기를 막고 캐시 키에 미러 스냅 해시·깊이·브랜치·번들 체크섬을 넣어 오염을 막습니다.

export GIT_HTTP_LOW_SPEED_LIMIT=5000
export GIT_HTTP_LOW_SPEED_TIME=120
git fetch origin --depth=50 --no-tags
  • 번들마다 체크섬을 메타데이터에 남깁니다.
  • 리전별 풀이면 키 접두에 리전 코드를 붙입니다.
  • 동일 명령 세 번 백오프 후 새 번들로 전환합니다.

인용 가능한 운영 수치와 정책 문장

  • 초기 깊이는 일로 고정하고 필요 시 오십까지 단계 확장합니다.
  • 슬라이스 파일은 이백 메가바이트 이하를 권장합니다.
  • 동시 fetch 는 러너당 이 세션 이하로 제한합니다.

공개 페이지와 다음 행동

정책을 문서로 고정하면 합의가 빨라집니다. · 기술 블로그· 요금· 구매· 고객 지원은 로그인 없이 열립니다.

Git 객체 전송이 긴 팀을 위한 Mac Mini M4 러너

동일 리전에 미러와 번들 캐시를 붙여 네트워크 지터 영향을 줄이고 빌드를 재현 가능하게 유지하세요.