CARGO_NET_RETRY・Cargo.lock 整合の決定マトリクス、CI 三歩、FAQ、サブモジュール/モノレポ注意を、設定例つきでまとめます。
跨境プルで詰まりやすい典型パターン
再試行が浅い: 短い CI タイムアウトと相性が悪く、取得フェーズで落ちやすいです。
ミラー運用のばらつき: 開発と CI でレジストリが違うと、同じ lock でも失敗が増えます。
プロキシ/証明書: TLS 検査で落ちても Cargo ログだけでは切り分けにくいです。
選型・決定マトリクス(ミラー・リトライ・Cargo.lock 整合)
インデックスの参照先をチームと CI で揃えるのが先決です。Cargo.lock はチェックサム固定のため、同一の .cargo/config.toml 方針に寄せます。
| 方針 | lockfile | 向くシーン | リスク |
|---|---|---|---|
公式 index.crates.io | --locked そのまま | 海外近傍・監査 | 高 RTT |
コミュニティミラー(例 mirrors.ustc.edu.cn/crates.io-index) | URL をリポで固定 | 跨境安定化 | 同期遅延 |
| 社内ミラー | 別ポリシーで管理 | コンプライアンス | 運用コスト |
.cargo/config.toml 例(sparse・ドメインは差し替え)[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
[net]
retry = 10
[http]
timeout = 120
環境変数 CARGO_NET_RETRY=10 でも再試行を上げられます。ジョブの wall-clock と併せて調整してください。
リモート Mac CI 三歩設定(環境変数・キャッシュ・検証)
チェックリストは次の五つです。
- 1.
rust-toolchain.tomlでツールチェーン固定、cargo -Vをログ。 - 2. CI に
CARGO_NET_RETRY=10を注入。 - 3.
cargo fetch --lockedをビルド前に分離。 - 4.
~/.cargo/registry等を lock ハッシュ+ツールチェーンでキャッシュ。 - 5. 失敗時は公式直叩きに一時切替えて RTT・プロキシ・証明書を切り分け。
env:
CARGO_NET_RETRY: "10"
タイムアウト・証明書・プロキシ FAQ
タイムアウト: [http] timeout と CARGO_NET_RETRY を併用し、フェッチはジョブ前半へ。証明書: 社内 CA または SSL_CERT_FILE。プロキシ: HTTP_PROXY/HTTPS_PROXY と NO_PROXY を揃え、設定の二重指定に注意します。
Git サブモジュール/モノレポ併用の注意
ルートの .cargo/config.toml を正とし、サブディレクトリ別ミラーは避けます。サブモジュール内にクレートがあっても親で source を統一し、CI の cwd ずれで別設定を読まないようにします。他言語とキャッシュを分けるなら Rust は Cargo.lock キーで切ります。
まとめ:2026年の Cargo 跨境は「方針の一本化」が最短
ミラー・リトライ・lockfile はチームと CI の契約として決め、同一 .cargo を配布し、フェッチとキャッシュを分離します。判断メモは次の三つです。(1)ミラー URL を README と CI に明記し cargo fetch --locked まで通す。(2)retry は十前後から計測して調整。(3)lock 更新 PR にミラー変更を混ぜない。
依存プル全般はプル安定性 FAQ、Git/npm の跨境はミラー比較と CI 三歩、Python はuv・PyPI CI マトリクスへ。ブログ一覧からも辿れます。ログイン不要で料金・ヘルプをご確認のうえ、購入ページでお試しください。MacPull の Apple Silicon リモート Mac で Rust CI を安定化できます。