🐙

Github Actionsのキャッシュについて

に公開

Github Actionsのキャッシュ

GitHub Actionsではワークフローの依存関係をキャッシュすることで、毎回の実行時に必要となる依存パッケージやビルド結果を保持し、ワークフローの実行時間を削減することができます。

https://github.com/actions/cache

以下のような設定を記載するとキャッシュを利用することができます。

- name: Cache vendor
    uses: actions/cache@v3
    with:
      path: vendor
      key: go-vendor-${{ hashFiles('go.sum') }}
      restore-keys: |
        go-vendor-
        go-

初回のワークフロー時はキャッシュが存在しないため、「Cache not found」のようなログが表示されます

Cache not found for input keys: go-vendor-5efb9c95322de5e8ce9420239b8954adb4e08550d4846a857a41bef8f7005f17, go-vendor-, go-

キャッシュが作成後のワークフローでは、キャッシュからのリストアが行われることが確認できます

Cache restored successfully
Cache restored from key: go-vendor-5efb9c95322de5e8ce9420239b8954adb4e08550d4846a857a41bef8f7005f17

キーの設定

キーは keyrestore-keysの2種類を設定できます。

  • key:キャッシュの保存と検索に利用されるキー
  • restore-keys:keyでキャッシュヒットしない場合にキャッシュの検索に利用されるキー。前方一致でキャッシュを検索。

restore-keyskeyで指定したキャッシュが見つからなかった場合に利用されます。
restore-keysは複数のキーを指定することができますが、上から順に試行され、最初に一致するキャッシュが利用されます。
restore-keysに一致するキャッシュが複数見つかった場合は、作成日が新しいものが利用されます。

キーの照合順とアクセス制限

キーは以下の順で照合されます。

  1. 現在のブランチをkeyで検索。
  2. 現在のブランチをrestore-keysで検索。restore-keysが複数ある場合は上から順に利用。
  3. リポジトリのデフォルトブランチをkeyで検索。
  4. リポジトリのデフォルトブランチをrestore-keysで検索。

この照合順序に従って探索され、最初に一致するキャッシュが利用されます。

上記の照合順を見てわかるように、異なるブランチやタグで作成されたキャッシュにアクセスすることはできません。
ワークフロー実行時のブランチ用に作成されたキャッシュを、同じブランチに対する別のワークフローからアクセスしリストアすることができます。

キャッシュのクリア

キャッシュはGithubのWebページから削除することができます。

Github Actionsの「Management」セクションの「Caches」から削除が可能です。

参考

Discussion