依存関係キャッシュによるビルド高速化

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-

キャッシュキーの仕組み

キャッシュシステムは順番にキーをマッチします:

  1. 完全一致: 完全なキャッシュヒット、インストールを完全にスキップ
  2. プレフィックス一致(restore-keys): 部分的なヒット、最も近いマッチを復元して変更分のみインストール
  3. マッチなし: コールドスタート、すべてをゼロからインストール

キャッシュの制限

  • リポジトリあたりの最大キャッシュサイズ:10 GB
  • 7日間アクセスされないキャッシュは自動的に削除
  • 制限に達すると、最も古いキャッシュから削除

パフォーマンスへの影響

キャッシュによる典型的な時間短縮:

  • npm/yarn: 実行ごとに30-120秒短縮
  • pip: 15-60秒短縮
  • Gradle/Maven: 60-300秒短縮

ユースケース

依存関係のインストールが総実行時間の大部分を占めるCIワークフロー。大きな依存関係ツリー(Node.js、Python、Java)を持つプロジェクトや頻繁にワークフローを実行するプロジェクトに最も効果的です。

試してみる — GitHub Actions Workflow Builder

フルツールを開く