【GitHub Actions】Armランナー使ってみた【節約術】

こんにちは。KENTEMのフロントエンド担当です。

KENTEMでは、去年から開発環境をGitHubへ移行中です。 tech.kentem.jp

それに伴い、GitHub Actionsの活用も増えてきたのですが、
既に無料枠は使い切ってしまい、徐々に請求額が高くなってきました。
開発には欠かせないものであり、バッチリ活用している結果ではあるのですが、
どうせならお得に使いたいですよね。
ということで今回は、2024年6月にパブリックベータ版が発表された、
Armランナーを使ってコスト削減したお話です。

特徴

  • 通常のランナーより安価
    1番はこれですね。価格表によると、
    Linux 2-coreであれば、通常1分あたり0.008ドルなのに対し、
    Armランナーだと0.005ドル約37%お得です。

  • larger runnersとして設定する
    初期状態では使用することができず、設定を行う必要があります。
    利用可能なプランはGitHub Team または GitHub Enterprise Cloudに限られています。
    ※ 2024年8月時点

  • 無料枠での稼働ができない
    larger runnersであるため、無料枠が残った状態でも課金が行われてしまいます。
    そのため、全てをArmランナーにするのではなく、
    通常のランナーで無料枠を使いつつ残りをArmランナーにするのがベストです。

設定方法

  1. organizationsの設定からNew GitHub-hosted runnerをクリック

  2. 名前などを設定してから、Create runnerをクリック
    Linuxだけではなく、Windowsも選択できます。
    今回、Imageは最新、Sizeは2-coreにします。
    CapacityやPermissionsはデフォルトのままでもOKです。
    皆様の会社の事情によって調整してください。

  3. GitHub Actionsの課金設定を行う
    特徴でも述べた通り、無料枠での稼働ができないため課金設定が必要です。

  4. ワークフローの runs-onを設定した名前に変更

jobs:
  sample:
    # ここは自分で付けた名前にする
    runs-on: Linux-2-core-ARM

これだけでOKです。

注意点と解決策

注意点として、Dockerで作られたActionはエラーになってしまいました。

プルリクエストが作成されると、Storybookをビルドしテストを実行。
最後にStorybookとテストレポートを、
Azure Static Web Apps(以降SWAと記載)にデプロイする。
そのようなワークフローを作成していたのですが、
SWAにデプロイするためのActionはエラーになってしまいました。

ジョブを分割し、Armランナーでビルド&テストまでは実行。
Storybookとテストレポートを、Artifactsとして保存。
通常のランナーでArtifactsをダウンロードし、デプロイだけ実行。
というようにして対応しました。
ジョブ分割してしまった分、実行時間は伸びてしまったのですが、
それよりも、分単位の価格が抑えられたメリットのほうが大きかったです。

色々と省略しましたが、ymlファイルのイメージとしてはこんな感じです。

jobs:
  storybook_build:
    # ここは自分で付けた名前にする
    runs-on: Linux-2-core-ARM

    steps:
      # ビルドしたり、テストしたり色々

      - name: Upload artifact storybook
        uses: actions/upload-artifact@v4
        with:
          name: storybook
          path: storybook-static

  storybook_deploy:
    runs-on: ubuntu-latest
    needs: storybook_build

    steps:
      - name: Download artifact storybook
        uses: actions/download-artifact@v4
        with:
          name: storybook
          path: storybook-static

      # StorybookをSWAにデプロイ

使ってみた結果

一部のワークフローをArmランナー化した状態での請求です。
たまたまArmランナーの10倍、通常のランナーが使用されているタイミングだったのですが、
Armランナー分の請求を10倍しても約10ドル、通常のランナーであれば約16ドル請求されていたので、効果は大きいと思います。
まだまだ一部しか対応できていないので、今後対応範囲を広めていきたいですね。

KENTEMでは、様々な拠点でエンジニアを大募集しています!
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。
recruit.kentem.jp career.kentem.jp