🖥
Github Actions の setup-ruby が遅いので新規PR作成時にもキャッシュを有効にする
問題
新規PRを作成するとRuby (setup-ruby)のキャッシュが使われず時間がかかる
name: My workflow
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- run: bundle exec rake
結論
Github Actions ではブランチの単位でキャッシュが生成されるみたいだ。
なので新規PR作成時に新しいブランチを使うと、参照するキャッシュヒットせずRubyのセットアップで数分の時間がかかる。
ただしそのPRのベースブランチ、またはデフォルトブランチのキャッシュは利用できるようなので、
この記事の通り、ベースブランチにマージされた時 (push指定) にもCIを有効にしておけば良い。
# github/workflows/ci.yml
on:
pull_request:
push:
branches:
- main
公式
補足 - キャッシュ指定
cache-versionを指定すれば良いようだ
ただ非推奨らしい
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
cache-version: 'XXXX'
生成されるキャッシュの確認
Githubレポジトリで Actions > Caches で確認できる
バージョン指定なしの場合に生成されるキャッシュ
(色々省略)/api-with--without--only---Gemfile.lock-(Gemfile.lockをハッシュ化した値)
バージョン指定ありの場合に生成されるキャッシュ
(色々省略)/api-with--without--only--v-XXXX-Gemfile.lock-(Gemfile.lockをハッシュ化した値)
上のように通常のキャッシュ名に加えて cache-version
が付与される形のようなので、特に無指定のままで良さそうだ
公開日時
2023-10-31
Discussion