Self-Hosted Runner on AWS CodeBuild を Organization 内の複数のリポジトリで動かす

Use self-hosted GitHub Actions runners in AWS CodeBuild で発表されたように GitHub Actions の Self Hosted Runner として AWS CodeBuild を利用できるようになった。

name: Hello World
on: [push]
jobs:
  Hello-World-Job:
    runs-on: codebuild-your-codebuild-project-name-${{ github.run_id }}-${{ github.run_attempt }}
    steps:
      - run: echo "Hello World!"

上記の your-codebuild-project-name のように AWS CodeBuild のプロジェクトを指定して実行することになる。
仕組みとしては、 GitHub から webhook を送信しているという形なので AWS CodeBuild のプロジェクト作成時に取得できる payloadsecret をリポジトリ の hooks に設定する必要がある。

2024/09/03 現在こちらの機能は、GitHub Enterprise でも有効となっていて (ソースプロバイダが “GitHub Enterprise”)、リポジトリの設定をする際には、「GitHub Enterprise アカウントのリポジトリ」と「GitHub Enterprise スコープウェブフック」の2種類から選択できるようになっている。
「GitHub Enterprise アカウントのリポジトリ」 を選択すると単一のリポジトリのイベントをフックにトリガーするというシンプルな動作をする。
一方で 「GitHub Enterprise スコープウェブフック」 は Organization 内のリポジトリを対象にイベントをフックにトリガーすることが可能となる。
特に複数のリポジトリがある場合にはリポジトリごとに CodeBuild のプロジェクトを作成するのは煩雑なため後者を使う方が便利な場面もある。

AWS CodeBuild now supports organization and global GitHub webhooks でもアナウンスがあるように以下の設定が必要となる

また、Personal Access Token を設定して認証している場合には GitHub and GitHub Enterprise Server access token にもある通り以下の項目についても権限が付与されている必要があるので注意する

以上により、同一 Organization 内で1つの AWS CodeBuild プロジェクトで Self-Hosted Runner を動作させることができる。

参考文献