リモート Mac 上の CI で Deno/JSR 依存を安定取得するため、取得経路・
deno.lock・DENO_DIR・並列と timeoutを決定表に整理しました。跨境のジッターに効くパラメータとコピペ用の環境変数例です。
シナリオと痛点
軸は「ホップ数」と「ロック逸脱の許容度」です。混在(jsr:+npm:)は切り分け対象が増え、共有 DENO_DIR はキャッシュ汚染を招き、--reload 常用は再現性を壊します。
| 優先度 | 方針 | 向くケース | トレードオフ |
|---|---|---|---|
| 再現性 | deno.lock+--frozen 系 | 本番ビルド | 初回取得が長い |
| 切り分け | deno cache を独立ステップ | 跨境不安定 | ログが読みやすい |
Deno/JSR の取得経路対照表
jsr: は JSR、npm: は npm レジストリ、https: は直 URL です。跨境では TLS/プロキシ経路がホストごとに異なるため、README にレジストリ方針を書きます。
| 指定子 | 主な到達先 | ロックへの載り方 | 跨境で効く打ち手 |
|---|---|---|---|
jsr:@scope/pkg | JSR API/CDN | deno.lock にハッシュ付きで記録 | ホストを JSR に寄せて説明が簡潔 |
npm:pkg | 設定された npm レジストリ | ロック+ tarball 参照 | 社内 Verdaccio 等へ寄せると安定しやすい |
https://… | 任意オリジン | URL と整合チェックサム | ミラー差分に弱い → 固定ドメイン推奨 |
ロックファイルとキャッシュディレクトリの実行パラメータ
既定は ~/Library/Caches/deno 付近です。CI では DENO_DIR にジョブ ID を含め、deno.lock を正とします。
| 目的 | 変数/ファイル | 推奨 | メモ |
|---|---|---|---|
| キャッシュ | DENO_DIR | …/deno-ci/$CI_PIPELINE_ID | 共有 Runner で必須級 |
| ロック | deno.lock | コミット・専用 PR で更新 | 逸脱は CI で落とす |
| TLS/プロキシ | DENO_TLS_CA_STORE 等 | system+NO_PROXY | 社内 CA は PEM も可 |
| ログ | deno --version | 先頭に固定出力 | 切り分け最短 |
シェル例(ID は CI に合わせて差し替え)
export DENO_DIR="$HOME/Library/Caches/deno-ci/${CI_PIPELINE_ID:-local}"
export DENO_TLS_CA_STORE=system
deno --version
deno install --frozen
CI 並列とタイムアウト閾値
跨境では timeout を先に広げ、次に max-parallel です。max-parallel は 2〜4 から、timeout-minutes は初回取得込みで 25〜45 分帯が目安です。
| 項目 | 目安 | 上げる/下げる |
|---|---|---|
max-parallel | 2〜4 | キャッシュ安定時↑/429 時↓ |
timeout-minutes | 25〜45 | フル取得あり↑/lint のみ↓ |
- 1.
deno cacheを単独ステップにする。 - 2.
deno install --frozenでロック逸脱を検知。 - 3. キャッシュキーにロックハッシュと Deno 版。
- 4. 再試行は最大 3 回・2s/4s/8s のバックオフ。
strategy:
max-parallel: 3
env:
DENO_DIR: /tmp/deno-${{ github.run_id }}
# job:
timeout-minutes: 35
跨境ネットワーク失敗時のリトライ FAQ
Q. すぐ --reload? A. 先に TLS/プロキシを確認。ロックを保ったままバックオフ付き deno cache を推奨します。
Q. npm: だけ遅い? A. tarball と RTT です。ミラー寄せと jsr: 置換候補を README に書きます。
Q. 取得できたのに古い? A. DENO_DIR 取り違え。ID 付きパスとロックハッシュ付きキャッシュキーで統一します。
まとめ:跨境 Deno CI は「経路の宣言+キャッシュ境界」が最短です
経路を表にし、DENO_DIR と deno.lock で境界を切ると再現性が上がります。Python・uv マトリクス、Go・GOPROXY マトリクスと併読してください。
Deno・JSR・CI
跨境の deno cache を安定させるなら、ノードの回線位置と DENO_DIR 設計が鍵です
MacPull のリモート Mac(Apple Silicon)で依存取得をまとめ、ジョブごとにキャッシュ境界を切りやすくできます。料金・ドキュメントはサイト上でご覧いただけます。
24時間以内デリバリー
複数リージョン
いつでも解約可