🌌

GitHub Actions を CodeBuild 上で動かす!

2024/07/05に公開

はじめに

2024/4/24 に GitHub Actions を CodeBuild で動かせるようになったので試してみます!

https://aws.amazon.com/jp/about-aws/whats-new/2024/04/aws-codebuild-managed-github-action-runners/

GitHub Actions 自体の利用方法はこちらをチェック!

https://zenn.dev/teradatky/articles/github-actions-newbie-20240703

何がうれしいのか?

GitHub Enterprise Server(GitHub のセルフホスト版)の利用者 には特にメリットがあります。GitHub Enterprise では GitHub ホステッドランナーが使えません[1]。そのため以下のような苦労がありました。

  • セルフホステッドランナーのプロビジョニングが必要
  • OS や エージェントのメンテナンスが大変
  • ランナーの可用性や信頼性確保の設計が必要
  • ワークフロー非稼働時もサーバー稼働費が発生

セルフホストの苦しみを マネージドサービスの CodeBuild にオフロードすることが可能 です!

どうやって利用するのか?

GitHub Actions を利用中であれば、以下手順[2]で CodeBuild が利用可能です!

  • GitHub と CodeBuild の接続
  • CodeBuild のビルドプロジェクトの作成
  • ワークフロー用 yml ファイルの更新

GitHub と CodeBuild の接続

CodeBuild からビルドプロジェクト作成画面に遷移してください。「ソース」から画面に従って「OAuth」または「個人用アクセストークン」でソースプロバイダに接続します。

image
image

CodeBuild のビルドプロジェクトの作成

続けてビルドプロジェクトを作っていきましょう。設定項目が多いので、一部のみ記載します。

ソース

「ソース」の設定例です。

image

プライマリソースのウェブフックイベント

「プライマリソースのウェブフックイベント」の設定例です。
イベントタイプに「WORKFLOW_JOB_QUEUED」を指定してください。

image

環境

「環境」の設定例です。

image

Buildspec

「Buildspec」はオーバーライドされるため設定不要です。

image

ワークフロー用 yml ファイルの更新

ワークフローの yml ファイルの runs-on: を以下のように書き換えてください。<project-name> はビルドプロジェクト名に変更し、 ${{ github.run_id }}, ${{ github.run_attempt }} はそのままで OK です。

runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}

具体例

以下のフォルダ構成・ファイルになります。

tree
├── .github
│   └── workflows
│       └── go-test.yml
├── go.mod
├── main.go
└── sqrt
    ├── sqrt.go
    └── sqrt_test.go
go-test.yml
name: Go Test

on:
  pull_request:
    branches: [master]

jobs:
  test:
    name: Run Go Tests
    runs-on: codebuild-github-actions-codebuild-sample-${{ github.run_id }}-${{ github.run_attempt }}

    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.21.3"

      - name: Get dependencies
        run: go mod download

      - name: Run tests
        run: go test -v ./...

動作確認

プルリクエストを作り、GitHub Actions をトリガーしてみます。

image

正常終了しました。ここのアイコンは CodeBuild ではないようです。

image

では CodeBuild 側を確認してみましょう。こちらも正常終了しています。

image

ログはどうでしょうか?CodeBuild 側にはセルフホストランナーとしてのログのみ記録され、テスト結果は表示されないようです。

image
image

ワークフローのログは GitHub Actions 側に記録される、ということですね。そちらを確認してみましょう。想定通り CodeBuild 上で稼働していること、テスト結果が出力されることが確認できました!

image
image

まとめ

CodeBuild が GitHub Actions のセルフホステッドランナーに対応しました。コンプライアンスやセキュリティの関係で、GitHub ホステッドランナーが使えない環境での強力な味方になってくれそうです!

脚注
  1. https://docs.github.com/ja/enterprise-server@3.11/admin/managing-github-actions-for-your-enterprise/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server ↩︎

  2. https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html ↩︎

GitHubで編集を提案

Discussion