GitHub Actionsのビルドが遅い…キャッシュでなんとか時短できた話

2025.05.27 09:00
2025.05.23 10:38
GitHub Actionsのビルドが遅い…キャッシュでなんとか時短できた話

GitHub Actionsでビルドすると、けっこう時間かかるんですよね。
内容にもよりますが、自分の環境では毎回5〜6分はかかってました。

「なんとかならんのかこれ…」と思って調べてみたところ、キャッシュを使えば速くなるらしいという情報を発見。ただ、キャッシュといってもいろいろあるので、最初は正直よくわからず…。

とりあえず、Docker Buildxまわりでキャッシュが効くらしいとわかって、試行錯誤しながら設定してみました。

結果的に、ビルド時間が6分 → 1分30秒に短縮できたので、備忘録的にまとめておきます。

コードはこんな感じの構成で書いてみました。

name: 本番環境のテスト

on:
  push:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Restore Docker cache
        uses: actions/cache@v4
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-

      - name: Build with cache
        uses: docker/build-push-action@v5
        with:
          file: ./Dockerfile
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new
          load: true
          tags: local/php:test

      - name: 起動
        run: |
          docker compose up -d

      - name: 実際の処理を実行
        run: |
          デプロイやテストなど、実際に行いたい処理をいれる

「Set up Docker Buildx」と「Restore Docker cache」、「Build with cache」でキャッシュを実現します。
それぞれの役割はこんな感じみたいです。

Set up Docker Buildx
Docker の Buildx を使えるようにセットアップするステップ。これでキャッシュを実現します

Restore Docker cache
Docker のビルドキャッシュを GitHub Actions のキャッシュストアから復元します

Build with cache
Buildx で Docker イメージをビルドし、ローカルで使えるように読み込みます

この3つで、思ったより簡単にキャッシュが効いてくれました。
最初はキャッシュの仕組みがピンとこなくて「???」って感じだったけど、動き出したときはちょっとうれしかったです。

今のところ安定して動いているので、この方法でしばらく様子見してみようかなと思ってます。

以上、わからないなりに試してみたらなんとかなった話でした。
同じように「GitHub Actions、ちょっと遅いな…」と思ってる方の参考になればうれしいです!

今回は以上です!