2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actionsを高速化するニッチな技

Posted at

測定する、分割するといった基本は除きます

クローン、checkoutを軽くする

履歴が必要だがクローンが重いとき

fetch-depth: 0を設定すると履歴もcloneされます。
ただ、履歴からコメントを作る処理などであれば、ソースコードは不要なことがあります
その場合は
blob: none
も設定すれば軽量化されます

- uses: actions/checkout@v4
  with:
    filter: blob:none
    fetch-depth: 0

全履歴は重いのでdepth: 0ならblob: noneを狙ってみましょう

重いファイル、不要なディレクトリの除外

リポジトリにバイナリや画像、csvなどなんでも詰め込むことがあります。
不要なものは削除しておきましょう。

sparse checkoutもおすすめです
ディレクトリ単位でも除外できるのでモノリポ時に便利

無駄なパッケージインストールをなくす

  • 全部dockerでの作業なのにactions内stepでパッケージインストールしている
  • 同一job内で何回もインストールしている
  • アプリケーションとは関係ないチェックジョブでアプリケーションの依存関係をインストールしている
  • npxで実行するだけのジョブで別にパッケージインストールしている
    • npxは自動的にインストールもするsugar syntax
    • ついでにsetup-bunを使いbunxに変えておくとさらに高速化

高速なパッケージマネージャに変える

npmよりpnpm / bun、pipよりuvのほうが断然インストールは速くなります
アプリケーションのパッケージマネージャは変更しづらいとしても、ちょっとしたcheck jobは変えてみましょう
特にbunとuvは圧倒的な速度なのでおすすめです

イメージプルよりbun

レガシー気味なチェックツールだとコンテナ前提になっていることがあります。
npm上にパッケージがあるようならイメージプルよりbunxなりで直接実行したほうが高速です

キャッシュに注意

actionsのcache機能は便利です。ただGitHubのオブジェクトストレージの問題か、キャッシュの復元に結構時間がかかります。キャッシュだけに満足せず実際にかかる時間を見てみましょう

また、キャッシュしたつもりでもキャッシュできてないことがあります。actionsのキャッシュ利用状況を確認しましょう

GitHub Actionsの置き換え系SaaSを試す

self hosted runnerのSaaS版という形で多数のSaaSがあります
低価格化、高速化を謳っているので試してみるのもありです
影響範囲としては1行、runs-on部分を変えるだけで済みます

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?