Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

【Go】GitHub Actionsでテストやビルドにキャッシュを効かせる

概要

最近、身内で使うDiscord botを作っています。

そのCIにGitHub Actionsを使っているんですが、CIが走るたびに結構時間がかかるなぁという印象を持っていました(だいたい1分30秒くらい)。 modulesやビルドにキャッシュを使っていないのでそのせいかなと思い、キャッシュを導入することにしました。

キャッシュを効かせる

今回使ったのは actions/cache です。

github.com

Goのキャッシュを効かせる方法に関しては、github-actions-golangのREADMEに記載されています。

今回はmodulesとビルドのキャッシュを効かせたいのと、対象のOSはLinuxのみなので以下のstepを追加しました。 dependencyが更新された際にキャッシュが変わるよう、keyにはgo.sumから生成したhashを含めています。

- name: use cache
  uses: actions/cache@v2
  with:
    path: |
      # modulesのキャッシュ
      ~/go/pkg/mod
      # ビルドキャッシュ(Linux)
      ~/.cache/go-build
    key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
    restore-keys: |
      ${{ runner.os }}-go-

キャッシュを入れたことで、今まで1分30秒ほどかかっていたCIが56秒で終わるようになりました。 f:id:johnmanjiro13:20210216144256p:plain

まとめ

これで手っ取り早くCIを早くすることができました。ひとまずテストやビルドで待つ時間が減ったので満足してます。

GitHub Actionsはパブリックリポジトリなら無料で使えるし、使うための設定も特に不要なのでめちゃくちゃいいですね。これからも使っていきます。