Deno·JSR·npm을 원격 Mac CI에서 매일 풀하는 팀용 대조표·의사결정 글입니다. deno.lock·DENO_DIR·풀 경로·병렬·타임아웃을 한 번에 정리했습니다. Git·npm·Homebrew 국경 간 최적화, 풀 안정성 FAQ, , 기술 블로그.

① 시나리오와 핵심 통증

로컬에선 통과하던 deno cache·test가 국경 간 러너에서만 실패하는 경우, DENO_DIR 한곳에 모이는 jsr:·npm:·URL 풀이 서로 다른 레지스트리를 타기 때문인 경우가 많습니다.

  • 이중 레지스트리: JSR·npm·Git/URL이 동시에 열리면 RTT·TLS가 누적되고, 프록시 허용 목록에 도메인 하나만 빠져도 전부 실패합니다.
  • lock 드리프트: deno.lock이 CI의 Deno·import map과 어긋나면 --frozen에서 멈춥니다. 흔히 버전·OS·명령 불일치입니다.
  • 캐시 경합: 동일 DENO_DIR에 동시 쓰기 시 락·부분 다운로드가 겹치고, 타임아웃만으로는 안 풀립니다.

아래는 HTTP 목적지를 먼저 표로 고정한 뒤 lock·캐시·병렬·재시도를 얹는 순서입니다. 전용 원격 Mac으로 Deno·OS를 맞추면 변인이 줄어듭니다.

② Deno·JSR 의존성 풀 경로 대조·의사결정 매트릭스

명세별 목적지를 먼저 밟아 두면 프록시·방화벽 티켓이 짧아집니다(사내 미러면 엔드포인트만 교체).

명세·출처 주된 네트워크 목적지 캐시·메타 특징
jsr: jsr.io API·CDN(조직별) lock에 해시 고정이 쉬움
npm: npm 레지스트리(NPM_CONFIG_REGISTRY) 토큰·.npmrc 민감
https: 호스트별 직접 페치 국경 간에 가장 흔들림
로컬 경로·심링크만 검증

의사결정: 신규 의존성을 JSR 중심으로 둘지 npm 자산을 유지할지 짧게 나눕니다.

JSR(jsr:) 중심 npm: 중심·기존 Node 자산
버전 import map과 궁합 기존 Node 툴링 호환
국경 간 엔드포인트 단순 홉 수 증가
사내 프라이빗 JSR·게이트 npm 미러 재사용
캐시 키 lock + Deno lock + npm 트리

혼합 저장소면 표를 채운 뒤 막힌 호스트 한 줄을 티켓에 붙이면 온콜이 짧아집니다.

③ lockfile·캐시 디렉터리 실행 파라미터

deno.lock은 커밋하고 CI는 --frozen으로 드리프트를 차단합니다. 토큰은 시크릿만.

항목 역할·실행 예
DENO_DIR 캐시 루트. CI는 잡별 하위 경로
deno.lock 해시 고정. 갱신은 전용 플로우에서만
deno cache --frozen lock 불일치 시 즉시 실패
deno install npm 트리·lock 갱신(동일 Deno 마이너)
TMPDIR SSD 로컬 경로 권장
HTTP(S)_PROXY 프록시·NO_PROXY 검표
NPM_CONFIG_REGISTRY 사내 npm 미러
# 복붙용 — 파이프라인 ID·엔트리 파일명은 프로젝트에 맞게 교체 export DENO_DIR="${HOME}/Library/Caches/deno-ci-${CI_PIPELINE_ID:-local}" export TMPDIR="${HOME}/tmp/deno-${CI_PIPELINE_ID:-local}" mkdir -p "$DENO_DIR" "$TMPDIR" deno --version deno cache --frozen --lock=deno.lock ./main.ts # npm 호환 트리: deno install (lock·frozen 플래그는 Deno 버전·프로젝트 표준에 맞게) deno check ./main.ts

캐시 복원 키는 lock + Deno 버전 + OS로 무효화 시점을 명시하세요.

④ CI 병렬·타임아웃 임계

동시 잡이 많으면 CPU보다 동시 페치·디스크 쓰기가 먼저 한계입니다. self-hosted 시작점이며 p95로 조정하세요.

파라미터 권장 시작점 메모
deno test --parallel 잡 수×파일 수가 과하면 IO 폭주 → 끔 동시 잡과 곱 주의
동시 슬롯 공유 디스크 2~3, NVMe 4~6 빌드 풀 FAQ
단계 타임아웃 초기 풀 15~25분, 워밍 5~12분 재시도·시드 우선
잡 ceiling 30~45분+ 슬롯 조정이 우선
백오프 2·4·8초, 3회 deno cache 래퍼
한 줄 체크
  • Deno 버전 고정·로그에 deno --version
  • deno cachedeno test 단계 분리
  • 전용 원격 Mac으로 OS·아키텍처 정렬

⑤ 국경 간 네트워크 실패·재시도 FAQ

Q. TLS timeout·ECONNRESET이 난다.
A. 러너에서 curl -I로 JSR·npm을 재현하고, 프록시·방화벽의 장시간 차단을 확인하세요. 2·4·8초 백오프 래퍼를 권장합니다.

Q. --frozen만 “needs update”다.
A. 로컬·CI의 deno cache/install·엔트리·import map을 맞추고, 필요하면 원격 Mac OS를 개발기와 동형으로.

Q. npm 미러만 되고 jsr: 가 403이다.
A. JSR API·CDN을 허용 목록에 추가하거나 전용 게이트웨이를 분리하세요.

Q. 공유 캐시인데 느리다.
A. 동시 쓰기 경합입니다. 시드 읽기 전용 + 잡별 DENO_DIR로 쓰기를 분리하세요.

한 줄 요약: 목적지 표 → lock 동결·DENO_DIR 격리 → 병렬·타임아웃·백오프 순으로 조여 가면 국경 간 Deno·JSR CI가 안정됩니다.

맺음말: Deno·JSR·npm은 홉·캐시 경합이 겹치기 쉽습니다. 원격 Mac 임대로 Apple Silicon·회선·디스크를 CI 전용에 두면 국경 간 풀·병렬 실험이 단순해집니다. 구매·도움말 센터·요금제, 글은 블로그·.

Deno·JSR·원격 CI

국경 간 풀·lockfile부터 고정

MacPull 원격 Mac으로 동형 Apple Silicon 노드를 유지하세요. 도움말 센터·구매·기술 블로그는 로그인 없이 이용할 수 있습니다.

전용 노드
SSH
유연한 기간
지원