GitHub Actions の larger runner を使い始めた人が書きました。
はじめに
GitHub Actions の larger runner を利用して、マシンスペックが要求されるアプリケーションの継続的なテストを始めた経験を共有します。GitHub Actions の larger runner(より大きなランナー)とは、標準 (Standard GitHub-hosted runners) よりも高いマシンスペック提供します。これを使用することで、マシンリソースを多く必要とする処理もスムーズに実行できるようになります。
目次
- はじめに
- GitHub Actions の larger runner が必要になった経緯
- 導入に要した時間
- 導入の手順
- 課金の確認
- 最後に
GitHub Actions の larger runner が必要になった経緯
私のプロジェクトでは、Elasticsearch や Transformer、PyTorch、Docker など、マシンスペックを要する処理が組み込まれています。GitHub Actions でユニットテストを実行しつつ、開発する際に以下の問題を抱えていました。
- Elasticsearch と Transformer を同時利用すると、Elasticsearch がユニットテストの途中で応答しなくなる
- Transformer モデルを pip install すると、Elasticsearch がユニットテストの途中で応答しなくなる
- Elasticsearch に 1G のメモリを割り当てないと起動しない
- Docker コンテナをキャッシュを利用せずにビルドしたジョブで続けてユニットテストすると、Elasticsearch がユニットテストの途中で応答しなくなる
Standard GitHub-hosted runners 上でテストするために、さまざまな策で回避してきましたが、万策尽きました。これからもアプリは拡張を続けるため larger runner を導入したところ、上記条件でも Elasticsearch が落ちないようになりました。Standard GitHub-hosted runners でアプリが落ちるか落ちないかを瀬戸際だったので、セルフホステッドランナーを利用するよりは、少しマシンスペックを上げる larger runner が良いと判断しました。
ランナーのスペックの before after
2 コア, メモリ 7 GB -> 4 コア, メモリ 16 GB
導入に要した時間
利用手順を調べ始めてから、利用の開始ができるまで 30 分程度でした。(もっと早く導入すれば良かった。)
導入の手順
- Organization 設定の権限を手に入れる
- Organization へのより大きなランナーの追加
- より大きなランナーへのアクセスをリポジトリに許可する
- より大きなランナーの名前を変更する
- Billing and Plan のページに行って、Actions の Limit spending を 0 以上に設定する
- workflow の yaml に
runs-on: ubuntu-latest-m
を追記して、actions を実行する
1, 2, 3 に関しては (GitHub の現在の機能とやや異なるものの) ドキュメントに手順が書いてありました。
https://docs.github.com/ja/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners
課金の確認
実際の実行時間と Billing のページから請求金額にずれがないかを確認しましょう。Actions の Limit spending を 10 ドルとした場合に、Linux 4 コアを選択した場合に 600 分以上実行できます。とても安いので、悩んでいる時間や Standard GitHub-hosted runners で試行錯誤している時間があったら導入した方が良さそうです。
最後に
最後までお読みいただきありがとうございます。励みになるので、良かったらいいね 👍 をお願い致します。