見出し画像

[GitHub Actions]GitHub-hosted Larger Runnersを試してみた

アイミツ開発チームでエンジニアリングをしている deliku といいます。

クラスメソッドさんの記事を見て、大規模ランナー(GitHub-hosted larger runners)が一般提供開始(GA)されたことを知ったので、早速試していきたいと思います。

GitHub-hosted Larger Runnersとは

Github ホステッドランナーはGitHub Actions ワークフローでジョブを実行するマシンです。これまでは利用できるランナーのスペックが十分とは言えなかったのですが、スペックが強化され(最大 vCPUs 64 まで利用可能)、大規模向けのホステッドランナーとなります。

従来のGithub ホステッドランナーマシンスペック

https://docs.github.com/ja/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources

GitHub-hosted Larger Runners作成

アカウントの Settings > Actions > Runners を選択し、New runnner で New GitHub-hosted runner を選択します。その後 ランナー名の入力、イメージ、スペックなどの選択すると簡単に作成できます。

作成画面への遷移の仕方
作成画面
作成後

GitHub-hosted Larger Runners適用

jobs.<job_id>.runs-on.labelsに、先程作成したランナーの名前を指定します。

before

 php-unit-feature:
    runs-on: ubuntu-latest

after

  php-unit-feature:
    runs-on:
      labels: larger-runner-Ubuntu-4cores

検証

現状スペックを2倍にして、GitHub-hosted Larger Runners による実行時間の改善が見込めるか検証してみました。

スペック比較表

なお、現状のワークフローでは並列処理できるものはすでに対応しており、今回core数が増えたことで並列数がさらに増やせるので、実行時間の改善が見込めるのではと期待していました。実際いくつかのワークフローで、job単体での実行時間は改善が見られたので、スペック増強による効果があったといえると考えています。

npm build check
npm run test

補足

job単体の実行時間が改善されていますが、Total durationsの数値が悪くなっているのは、下記並行ジョブ数の上限に達し、ジョブがキューイングされていたのではないかと推測しています。この推測が違っている可能性は全然ありそうあので知見ある方いたらぜひ教えていただけると嬉しいです。

並行ジョブ - アカウント内で実行できる並行ジョブ数は、使用するランナーの種類や GitHub プランによって異なります。 この制限を超えた場合、超過のジョブはキューイングされます。

https://docs.github.com/ja/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits


まとめ

CIの待ち時間は極力短くしたいと思っています。終わるまで他の作業をするには中途半端ですし、終わるまで待っているにはちょっと時間がもったいないと感じてしまうからです。

また、数分でも実行時間を改善できれば、恩恵としてチームメンバー全員のCIの待ち時間が大きく改善されることになります。ですので、コツコツ改善を積み重ねていき、開発者体験をより良くしていければなと思います。

最近、Publickeyから 「開発者の典型的な1日の仕事の中で何に時間が費やされているのか、個々の開発者に時間の長い上位3つまでの時間の使われ方と1日の中でのその割合」を集計したがグラフが公開されていたので、紹介しておきます。ビルド待ちが27%で上位を占めているようです。

https://www.publickey1.jp/blog/23/92aigithub500.html

▶ 【PR】ユニラボ に興味がある方へ

今回の記事を読んでユニラボに興味を持っていただけた方は、まずはカジュアル面談でざっくりお話させていただければと思います!


この記事が気に入ったらサポートをしてみませんか?