GitHub Actions で CI している皆様、こんにちは。
GitHub Actions 便利ですよね。使わない日がないというくらい毎日お世話になっています。
さて、CI といえば良く問題になるのが実行時間。
長い待ち時間は開発効率を下げますし、プライベートリポジトリだと Runner の費用も嵩んでしまいます。
時間を短縮する方法は色々ありますが、一手目によく行われるのが依存パッケージのキャッシュじゃないかなと思います。
例えば Go で開発していると、依存パッケージは ~/go/pkg/mod にダウンロードして保存されます。
これを CI 実行のたびにダウンロードしてコンパイルするのは時間とお金の無駄というものです。
幸い、GitHub Actions には CI の実行間でこういった依存パッケージを保存して再利用できるキャッシュ機能があります。
詳しくは以下のドキュメントをご覧ください。
Caching dependencies to speed up workflows - GitHub Docs
とか書いてますが、面倒くさがりな私はこれまでまともにこのキャッシュ機能を調べたことはありませんでした。
なぜって GitHub はとても親切なので、以下のようにするだけでキャッシュ機能で依存関係を保存して再利用できるようにしてくれているからです。
jobs:
test:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
cache: true
注目は cache: true です。こうするだけで Go の依存パッケージをキャッシュしてくれます。
しかもデフォルトが true なので、実は書かなくても大丈夫。えらい!楽!以上!
・・・そうは問屋が卸さなかったのが今回の話です。
続きを読む