トップ/記事一覧

GitHub Actions でキャッシュヒットしなくて悩んだ話

📆2022/11/15🔖 Github Actions

GitHub Actions の actions/cachenode_modules をキャッシュしていたが、キーが一致しているキャッシュが存在するのに、キャッシュヒットしなくてしばらくハマっていた。

https://github.com/actions/cache

結論

  • actions/cache にはスコープという概念があり、基本的には別ブランチのキャッシュは参照できない
  • 例外的に、デフォルトブランチもしくは base ブランチ(PR のマージ先)のキャッシュは他ブランチからでも参照ができる
  • デフォルトブランチ(develop)のキャッシュを生成することでヒットするようになった
  • 🐈

    僕たちのデフォルトブランチは develop ブランチに設定していたが、develop ブランチのキャッシュが作成されておらず、feature ブランチのキャッシュだけが作成されていた。

    特に package.json に変更を加えていないのにも関わらず、develop ← feature の PR を作成した際、初回の CI ではキャッシュヒットせず yarn install が実行されるが、2回目以降の CI ではキャッシュヒットするという挙動で不思議に思っていた。

    きちんとドキュメントを読むのは大事だ。

    🐈

    細かい部分のベストプラクティスについて(分かってないこと)

    キャッシュヒットしなかった場合、feature ブランチのキャッシュファイルが作成されちゃうような気がするんだけど、これを防ぐ術はないのか。develop ブランチのキャッシュが更新されるべきな気がするんだけど、これは master ← develop の PR 時に生成するべきなのか、

    それとも develop ブランチ push 時のスクリプトでキャッシュ再生成させるとか仕込むべきか。feature / develop / master ブランチ運用してる人もしいたらこのへんの話がしたい。