トップ «前の日記(2025/04/24 (木) ) 最新 編集 RSS feed

HsbtDiary


2025/04/25 (金) [長年日記]

vcpkg のキャッシュをひたすら直していた

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 の鬼ゴロシを見た

コミックで数巻まで読んでいた鬼ゴロシという暴力ボコボコ漫画が Netflix 映像化されたのでみた。

https://www.netflix.com/title/81566553

コミックを最後まで読んでないのでストーリーが踏襲されたものなのかはわからないけど、序盤であるとか人間関係については独自アレンジした、という内容ではあった。長編ドラマ、としては完結していてよかったと思う。

マーベルみたいに全部見ないとよくわからんのだが、というのに比べると、こういうシュッと眺めることができるやつは良い。