Ruby の Windows CI が軒並み遅くなっていて、全てのジョブが1時間以上を要するようになっていたので真面目に調べた。最初は Arm のビルドをするようにしたので初回だけかな、とか Arm だけかな、とか思ったら全ジョブで遅くなっていた。
主に時間が増加しているのは予想通り vcpkg のビルドで、これは actions/cache ではなく vcpkg に built-in されているキャッシュ機能を使っていたんだけど1週間前には
Restored 8 package(s) from GitHub Actions Cache in 5.4 s. Use --debug to see more details.
としてバイナリを restore できていたものが
Restored 0 package(s) from GitHub Actions Cache in 2.6 s. Use --debug to see more details.
と全部失敗してしまっている。いろいろ設定を試しても
Completed submission of openssl:x64-windows@3.4.0 to 0 binary cache(s) in 2.8 s
という感じでビルド後のキャッシュ保存にひたすら失敗し続ける、という状況でどうにもわからんとなったので actions/cache
を使って以下のように腕力でキャッシュするようにしてしまった。
- name: Restore vcpkg artifact
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
with:
path: C:\Users\runneradmin\AppData\Local\vcpkg\archives
key: windows-${{ matrix.os }}-vcpkg-${{ hashFiles('src/vcpkg.json') }}
path に指定しているのは vcpkg がローカルでキャッシュとして restore するファイルの保存先で、キーは OS と vcpkg.json というマニフェストファイル。最初はアーキテクチャの arm64 と x64 だけでいいじゃん、と指定したものの vcpkg は VS のバージョンで区別するっぽく、VS 2019 と VS 2022 とで作成したバイナリにキャッシュ再利用としての互換がなく常にビルドしてしまっていたので OS を指定した。
これで 20-40min かかっていた vcpkg のジョブが 10sec くらいまで元通り短縮されたのでよかった。これ2-3日くらい調べ続けていたので解決してよかったけど、異様に時間かかったなあ。
コミックで数巻まで読んでいた鬼ゴロシという暴力ボコボコ漫画が Netflix 映像化されたのでみた。
https://www.netflix.com/title/81566553
コミックを最後まで読んでないのでストーリーが踏襲されたものなのかはわからないけど、序盤であるとか人間関係については独自アレンジした、という内容ではあった。長編ドラマ、としては完結していてよかったと思う。
マーベルみたいに全部見ないとよくわからんのだが、というのに比べると、こういうシュッと眺めることができるやつは良い。