🐫
脱 pnpm/action-setup で GHA のジョブも高速化
TL; DR
-
pnpm
, GHA 利用向け - GHA において pnpm/action-setup を利用しなくても
corepack
でpnpm
使える - 当社プロジェクトの場合、GHA の該当 JOB が 3 分 30 秒 -> 1 分 20 秒 と 処理時間 1/3 程度に劇的短縮
- かなりお手軽にできる改善
背景
ロンラン株式会社 CEO 兼 CTO の武部です。
当社プロジェクトでは、パッケージマネージャに pnpm
を利用しています。
GitHub Actions では pnpm/action-setup
を利用して pnpm
をセットアップしていたのですが、最近は Node.js 16 actions are deprecated
な警告が出るようになり、気になっていました。
pnpm/action-setup
はメンテ頻度も低く、今後どうしたもんかと思案していたところ、良いアドバイス見つけました。
早速試してみます。
before - after diff
GHA コードの修正。該当箇所の diff は例えば次のとおり。
コードもかなりコンパクトになりました。ポイントは下記です。
-
pnpm/actions-setup
退役 -
actions/cache
を利用したnode_modules
等のキャッシュも退役。キャッシュ はactions/setup-node
に任せる -
corepack
とactions/setup-node
によるpnpm
のセットアップ- 元々
pnpm
のバージョンはpackage.json
に記載して管理していました
- 元々
修正後の GHA ジョブ実行
何もハマることありませんでした。
GHA の実行ログを確認したところ、初回実行時は pnpm
/ node_modules
等 の キャッシュ が作成・保存され、二度目の実行時はキャッシュから復元されていることが確認できました。
速度変化
平均して 3 分 30 秒ほど掛かっていた job が、1 分 20 秒ほどに短縮!
Before | After |
---|---|
上記は単発のジョブの例ですが、実際には後続の複数ジョブがあるため、ワークフロー全体での恩恵は大きいです。
どこが変化したのかみてゆきます。actions/setup-node
ネイティブのキャッシュ処理が効率良し。合計 1 分 25 秒が 5 秒に。
Before | After |
---|---|
まとめ
- 嬉しさポイント三つ
- GHA 処理時間削減
- GHA コードがスリムに
- コスト 💰 も削減
-
pnpm/action-setup
いままでお世話になりました -
corepack
活用してゆきましょう
Discussion