① 시나리오와 핵심 통증
로컬에선 통과하던 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 미러 |
캐시 복원 키는 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 cache와deno 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가 안정됩니다.