はじめに
AWS CodeBuildプロジェクトをGitHubのWebhookトリガーで実行したいことがありました。
ややとっつきにくかったので、具体的な例をいくつか書いておきます。
※本投稿は2020年4月時点の挙動を前提としています
仕様
ここを読む。
GitHub ウェブフックイベントのフィルタリング - AWS CodeBuild
WebhookFilter - AWS CodeBuild
ケーススタディ1: developブランチに変更がpushされた時にビルドを開始する
GitHub Webhook ペイロード抜粋
Headers
...
X-GitHub-Event: push
...
Payload
{
"ref": "refs/heads/develop",
...
}
CodeBuildプロジェクトでのフィルタリング設定
- イベントタイプ
プッシュ
- フィルタ(マネジメントコンソールでは「これらの条件でビルドを開始する」)
- HEAD_REF:
^refs/heads/develop$
- 他は未指定
- HEAD_REF:
ケーススタディ2: masterブランチへのPullRequestがmergeされた時にビルドを開始する
GitHub Webhook ペイロード抜粋
Headers
...
X-GitHub-Event: pull_request
...
Payload
{
"action": "closed",
...
"pull_request": {
...
"state": "closed",
...
"base": {
"ref": "master",
...
},
...
"merged": true,
...
}
}
CodeBuildプロジェクトでのフィルタリング設定
- イベントタイプ
PULL_REQUEST_MERGED
- フィルタ(マネジメントコンソールでは「これらの条件でビルドを開始する」)
- BASE_REF:
^refs/heads/master$
- 他は未指定
- BASE_REF:
まとめ
こんなノリだと分かれば、あとは前掲ドキュメントとにらめっこしながらいろいろできるかと思います。