リモート Mac と GitLab Runner で PHP 依存取得 を安定させる 判断マトリクス です。ホーム・ブログ一覧・購入・ヘルプはログイン不要。関連:Gradle・Maven マトリクス、Git・npm・brew 跨境、Go プロキシ連鎖。
シナリオとボトルネック(跨境タイムアウト・認証・ロック一貫性)
跨境 は 往復遅延 と 中間タイムアウト で composer install が切れやすく、私服と公開源 の混在は 認証抜け で再現性を壊します。composer.lock を ローカルと CI で揃えないと 同コミットでも解決差 が出ます。以下で 取得順と Runner 設定 を固定します。
Packagist・国内ミラー・企業私服の連鎖回源:composer config 対照表
三層 の例です。URL は 社内許可リスト に合わせて置換してください。
| 層 | 役割 | 設定例 |
|---|---|---|
| 企業 GitLab 私服 | 社内一次源 | composer config repositories.gitlab composer "https://gitlab.example.com/api/v4/group/ID/-/packages/composer/" |
| 国内ミラー | 近接キャッシュ | composer config repositories.cnmirror composer "https://mirrors.aliyun.com/composer/" |
| 本家 Packagist | 最終フォールバック | composer config repositories.packagist composer "https://repo.packagist.org" |
補足:composer config --unset repos.packagist 後に 順に登録 する運用では、トークン は COMPOSER_AUTH に閉じ、優先度と切替手順 を Wiki に残します。
GitLab CI と並列ジョブ:HTTP プロキシ・リトライ退避パラメータ一覧
同一出口 の 過剰並列 は 枯渇とレート制限 を招くため resource_group 等で抑え、HTTP_PROXY/HTTPS_PROXY 利用時は NO_PROXY に 社内 GitLab を入れます。
| 項目 | 置き場所 | メモ |
|---|---|---|
| 認証 | マスク CI 変数 → COMPOSER_AUTH | 短命・ログ禁止 |
| リトライ | retry:+シェル指数待機 | 二四八秒など三回が目安 |
| タイムアウト | ジョブ timeout・COMPOSER_PROCESS_TIMEOUT | 巨大ベンダ想定で余裕 |
リモート Mac の shell でも 同じ変数 を launchd または before_script で注入し --no-interaction を固定します。
リモート Mac 上のキャッシュディレクトリ・COMPOSER_CACHE_DIR・CI キャッシュ鍵
COMPOSER_CACHE_DIR は ジョブ別サブディレクトリ か artifact で競合を避け、cache:key に composer.lock の ハッシュ と PHP 版 を含めます。
- 引用①:
composer validate --strictを マージ前ゲート に。 - 引用②:
--prefer-dist既定で 揺らぎ に強くする。 - 引用③:
composer clear-cacheを 定期メンテ に入れ容量とヒット率を見る。
実装チェックリスト(五ステップ)
運用へ貼る順序
- ① 公開/社内 比率を数え 取得元表 をレビュー。
- ②
repositories.*を リポジトリコミット で共有。 - ③ Deploy Token 等を
COMPOSER_AUTHのみへ。 - ④
COMPOSER_CACHE_DIRと cache:key 規則 を文書化。 - ⑤ タイムアウト・認証・ハッシュ の三パターンで 切替と再試行 を手順化。
FAQ(401・レート制限・ハッシュ検証失敗)
401/403(私服)
gitlab-token の ホスト が リダイレクト後 と一致するか、スコープと期限 を確認します。
レート制限・429
並列を下げ キャッシュ命中 を上げ、Retry-After に従い バックオフ します。
ハッシュ/checksum 不一致
古いミラー や プロキシ改変 を疑い、信頼端末 で lock を揃え 取得元を一本化 します。