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 のプロジェクト作成時に取得できる payload
と secret
をリポジトリ の 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 でもアナウンスがあるように以下の設定が必要となる
- リポジトリは、「GitHub Enterprise スコープウェブフック」
- これを設定するとリポジトリURLが自動的に
CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION
に設定される
- これを設定するとリポジトリURLが自動的に
- スコープタイプを「組織レベル」
- GitHub Enterprise がホストされている url が
https://your.github.domain/org/repo
の時には、以下のように設定する- 組織名を
org
- ドメイン名を
your.github.domain
- 組織名を
- ウェブフックの種類については、
WORKFLOW_JOB_QUEUED
にする- これが、AWS CodeBuild を Self-Hosted Runner として利用する時には共通で必要な設定
また、Personal Access Token を設定して認証している場合には GitHub and GitHub Enterprise Server access token にもある通り以下の項目についても権限が付与されている必要があるので注意する
repo
admin:repo_hook
admin:org_hook
以上により、同一 Organization 内で1つの AWS CodeBuild プロジェクトで Self-Hosted Runner を動作させることができる。