#あすみかんの上にあすみかん

#たのしいことしかかかないことをここに決意します

ubuntu-latest から ubuntu-slim へ移行しよう!コスト削減うれしい〜!

ubuntu-slimとは

github.blog

2025/10/28にパブリックプレビューとなったランナーです。

公式のchangelogにも書かれていますが、従来の ubuntu-latest と比較した際に特筆すべき違いは以下の3点です。

  • VMではなくコンテナ
  • 1vCPU / 5GB RAM
  • 15分上限

VMではなくコンテナ

ubuntu-latest はジョブごとに VM(仮想マシン)を起動して動作しますが、ubuntu-slim はコンテナベースのランナーで動作します。 「ハイパーバイザーレベル2の分離(hypervisor level 2 isolation)」と書いてあり、VM のような独立した環境を提供しつつ、コンテナ特有の軽さと起動速度を両立しています。

1vCPU / 5GB RAM

ubuntu-slim は1vCPU / 5GB RAM です。 ubuntu-latest が通常 2〜4vCPU / 7〜16GB RAM の範囲なのに比べると、半分以下のリソースです。 コンパイルや大規模テストのように CPU 負荷が高いジョブで遅くなりますが、軽量な処理中心のジョブやコスト重視の運用には十分向いています。

15分上限

ubuntu-slim ではジョブごとの最大実行時間が 15 分に制限されています。 ジョブが短時間で終わることが前提のため、「動かしてすぐ結果を見たい」ようなワークフローとの相性は非常に良いです。

移行手順

これだけ。

ランナーを変えるだけなのでチョー簡単ですね。

移行したActions

自動でラベルやレビュアーを付与する Action

これは公式サイトに載っている例なので言わずもがなですが、リポジトリ運用を支援するワークフローは ubuntu-slim に問題なく移行できました。 これらの処理は GitHub API を叩くなどネットワークI/O中心の軽いタスクであり、CPUリソースをほとんど消費しません。 ジョブの実行時間は数十秒〜1分程度で、ubuntu-latest とほとんど変わらずに完了しました。 つまり、処理速度はそのままにコストだけ下がったという形で、嬉しい結果になりました。

軽微なlintチェックをしているような Action

これも公式サイトに載っている例なので言わずもがなですが(2回目)、JSONやYAMLのlintチェックなどが存在したので ubuntu-slim に移行しました。 この手のジョブは処理が短く、ツールの依存関係も小さいため、コンテナランナーでも特に問題はありません。 ジョブの実行時間は数十秒〜1分程度で、ubuntu-latest とほとんど変わらずに完了しました。 つまりこちらも、処理速度はそのままにコストだけ下がったという形となっております。

比較的短時間で完了するテストを実行する Action

ユニットテストや軽量なスモークテストのように、短時間で完了するテストジョブも ubuntu-slim に移行しました。 ビルド対象が少なく、外部サービスとの通信も限定的な場合は、コンテナランナーでも安定して動作します。

ただし、実行時間はやや増加しており、おおよそ2倍程度の伸びが見られました。 そのため、「多少時間が伸びてもコストメリットがある」「待ち時間の影響が少ない」といった条件を満たすジョブのみを選定して移行しています。

アプリケーションをデプロイし、完了までポーリングしながら待機する Action

アプリケーションをデプロイしたあと、一定間隔でデプロイ完了をポーリングし、状態が安定するまで待機するタイプのActionです。 具体的には、ecspresso や ecschedule などが該当します。

この処理はCPUを常時使用するわけではなく、待機時間が大部分を占めるため、軽量なコンテナ環境との相性が良いです。 実際に移行してみても、実行時間の伸びはほとんど見られませんでした。

移行しなかったActions

実行時間が比較的長いテストを行う Action

先ほどの「移行した例」と対になる部分です。 もともと実行時間が長いジョブは、ubuntu-slim の15分制限に収まるかギリギリのケースが多く、タイムアウトのリスクがあります。 また、待ち時間が長くなると開発体験も悪化するため、現時点では移行するメリットよりデメリットの方が大きいと判断しました。

Docker コマンドの実行を前提としている Action

ubuntu-slim はコンテナ環境で動作しているため、docker build や docker push などのコマンドを実行するActionは使用できません。 具体的には、Dockerイメージをビルドしてレジストリへプッシュするような CDジョブはすべて対象外となりました。 このあたりはVMランナー (ubuntu-latest) のみで動作する前提のため、単純な置き換えでは動かせません。

VM にプリインストールされているコマンドの存在を前提としている Action

VM 環境ではプリインストールされていたツールが、ubuntu-slim には含まれていないケースです。 スクリプト内で前提として使われているコマンドがないとジョブが失敗します。

この場合の回避策としては、ジョブの冒頭で apt-get などを使って必要なコマンドをインストールする方法があります。 インストール手順を追加すると少し複雑になるので、ジョブの性質や頻度を考慮してバランスを取りながら採用するのが良さそうです。

コストはどのくらい変わるか

10月末に変更したばかりのため、正確なトータル額は今月末の集計を待たないとわかりません。

また現在は複数人で開発を行っているため、比較をわかりやすくする目的で、 1人あたりの試算として「ubuntu-latest のみ」と「ubuntu-latest+ubuntu-slim 併用」の2パターンで換算額を出してみました。

1プッシュあたりのジョブ実行時間は、実際には並列で動く複数ジョブをすべて足し合わせた合計(直列換算)として計算しています。 たとえば、ジョブ全体の終了は15分でも、各ジョブの時間を足すと20分、といったイメージです。

CIコストの比較(1ヶ月)

構成 概算コスト 備考
ubuntu-latest のみ 約 21.6ドル 実行時間27分 × 0.008ドル × 100回
ubuntu-latest + ubuntu-slim 併用 約 17.6ドル ubuntu-latest:
実行時間19分 × 0.008ドル × 100回
ubuntu-slim:
実行時間12分 × 0.002ドル × 100回

1日5プッシュ・20営業日で100回まわすものとしています。 ubuntu-slim を導入したことで、直列換算の実行時間は増えてしまっていますが、それでもCIジョブの実行コストをおよそ 21.6ドル → 17.6ドル に削減できます。 また、実際には最も長いジョブより長くなるわけではないため、体感としてはほとんど変わりません。

CDコストの比較(1ヶ月)

構成 概算コスト 備考
ubuntu-latest のみ 約 8ドル 実行時間25分 × 0.008ドル × 40回
ubuntu-latest + ubuntu-slim 併用 約 3.2ドル ubuntu-latest:
実行時間5分 × 0.008ドル × 40回
ubuntu-slim:
実行時間20分 × 0.002ドル × 40回

1日1日2マージ(リリース込み)・20営業日で40回まわすものとしています。 ubuntu-slim を導入したことで、直列換算の実行時間もそのままで、CDジョブの実行コストをおよそ 8ドル → 3.2ドル に削減できます。

トータル(CI・CD)の比較(1ヶ月)

構成 概算コスト
ubuntu-latest のみ 約 29.6 ドル
ubuntu-latest + ubuntu-slim 併用 約 20.8ドル

結果として、全体ではおよそ 30% のコスト削減 となりました。 試算はあくまで1人あたりの数値ですが、エンジニアチームの人数が増えるほど、インパクトはかなり大きくなると思います。 Docker ビルドや長時間テストなどは引き続き ubuntu-latest で運用していますが、それでも シンプルに置き換えられるジョブが全体の半分ほどはあった という印象です。

2025/11/08追記: 現時点ではまだパブリックプレビュー版なので注意

ubuntu‑slim ランナーは、2025年10月28日に公開された新しいランナーで 「パブリックプレビュー(Public Preview)」 の段階です。 本番運用に移す際には、以下の点をあらかじめ押さえておくと安心です。

  • 仕様変更の可能性がある
  • 「想定外の動き」が起こる可能性がある
  • 使用ポリシーは確認しておくこと(SLAは対象外だったりする)

また、記事公開で以下の指摘もいただきました。たしかに〜〜。ありがとうございます!!

まとめ

  • 軽めのActionsはひとまず ubuntu-slim に変えよう!
  • ubuntu-latest ã‚’grepして ubuntu-slim に書き換えるだけ!!
  • コストは月あたり約30%削減(当社比)。やる価値あり!!!