依存関係キャッシュによるビルド高速化
npm、pip、Maven、Gradleの依存関係をキャッシュしてGitHub Actionsワークフローを高速化。actions/cache、setup-action組み込みキャッシュ、キャッシュキー戦略を解説。
Advanced
詳細な説明
GitHub Actionsでの依存関係キャッシュ
ワークフロー実行間で依存関係をキャッシュすることで、ビルド時間を劇的に短縮できます。依存関係のインストールが数分から数秒になります。GitHub Actionsはパッケージマネージャーに応じて複数のキャッシュアプローチを提供しています。
組み込みキャッシュ(推奨)
ほとんどのsetupアクションには組み込みキャッシュが含まれています:
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
手動キャッシュ(actions/cache)
より細かい制御にはactions/cache@v4を直接使用します:
- name: Cache node_modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
キャッシュキーの仕組み
キャッシュシステムは順番にキーをマッチします:
- 完全一致: 完全なキャッシュヒット、インストールを完全にスキップ
- プレフィックス一致(restore-keys): 部分的なヒット、最も近いマッチを復元して変更分のみインストール
- マッチなし: コールドスタート、すべてをゼロからインストール
キャッシュの制限
- リポジトリあたりの最大キャッシュサイズ:10 GB
- 7日間アクセスされないキャッシュは自動的に削除
- 制限に達すると、最も古いキャッシュから削除
パフォーマンスへの影響
キャッシュによる典型的な時間短縮:
- npm/yarn: 実行ごとに30-120秒短縮
- pip: 15-60秒短縮
- Gradle/Maven: 60-300秒短縮
ユースケース
依存関係のインストールが総実行時間の大部分を占めるCIワークフロー。大きな依存関係ツリー(Node.js、Python、Java)を持つプロジェクトや頻繁にワークフローを実行するプロジェクトに最も効果的です。