GitHubウェブフックイベント
Webhook フィルタグループを使用して、ビルドをトリガーする GitHub Webhook イベントを指定できます。たとえば、ビルドが指定されたブランチに対してのみトリガーされるように指定できます。
ビルドをトリガーするウェブフックイベントを指定するには、ウェブフックフィルタグループを 1 つ以上作成できます。1 つ以上のフィルタグループのフィルタがすべて true と評価されると、ビルドがトリガーされます。フィルタグループを作成する際、以下を指定します。
- イベント
-
GitHubでは、以下のイベントを 1 つ以上選択できます。
PUSH
、PULL_REQUEST_CREATED
、PULL_REQUEST_UPDATED
、PULL_REQUEST_REOPENED
、およびPULL_REQUEST_MERGED
。 ウェブフックイベントタイプはウェブフックペイロードのX-GitHub-Event
ヘッダーに含まれています。X-GitHub-Event
ヘッダーに、pull_request
または が表示される場合がありますpush
。 プルリクエストイベントの場合、タイプはウェブフックイベントペイロードのaction
フィールドにあります。以下の表に示すのは、X-GitHub-Event
ヘッダー値とウェブフックのプルリクエストペイロードのaction
フィールドが、利用可能なイベントタイプにマッピングされる方法を示しています。X-GitHub-Event
ヘッダー値ウェブフックイベントペイロードの action
値イベントタイプ pull_request
opened
PULL_REQUEST_CREATED
pull_request
reopened
PULL_REQUEST_REOPENED
pull_request
synchronize
PULL_REQUEST_UPDATED
pull_request
closed
、およびmerged
フィールドはtrue
PULL_REQUEST_MERGED
push
該当なし PUSH
注記 PULL_REQUEST_REOPENED
イベントタイプは、 GitHub および GitHub Enterprise Server でのみ使用できます。 - 1 つ以上のオプションフィルタ
-
フィルタを指定するには、正規表現を使用します。ビルドをトリガーするイベントで、関連付けられているフィルタはすべて true と評価する必要があります。
ACTOR_ACCOUNT_ID
( コンソールACTOR_ID
の場合)-
GitHubまたはGitHubエンタープライズサーバーのアカウント ID が正規表現パターンと一致すると、Webhook イベントによってビルドがトリガーされます。この値は、ウェブフックペイロードの
sender
オブジェクトのid
プロパティで見つかります。 HEAD_REF
-
ヘッドリファレンスが正規表現パターンと一致すると (たとえば、
refs/heads/branch-name
または )、Webhook イベントによってビルドがトリガーrefs/tags/tag-name
されます。プッシュイベントの場合、参照名はウェブフックペイロードのref
プロパティで見つかります。プルリクエストイベントの場合、ブランチ名はウェブフックペイロードのhead
オブジェクトのref
プロパティで見つかります。 BASE_REF
-
基本参照が正規表現パターンと一致すると ( など)、Webhook イベントによってビルドがトリガー
refs/heads/branch-name
されます。BASE_REF
フィルタは、プルリクエストイベントでのみ使用できます。ブランチ名は、ウェブフックペイロードでbase
オブジェクトのref
プロパティで見つかります。 FILE_PATH
-
変更されたファイルのパスが正規表現パターンと一致すると、Webhook によってビルドがトリガーされます。
FILE_PATH
フィルタは、GitHubプッシュおよびプルリクエストイベントと GitHub Enterprise Server のプッシュイベントで使用できます。GitHubEnterprise Server のプルリクエストイベントでは使用できません。 COMMIT_MESSAGE
-
HEAD コミットメッセージが正規表現パターンと一致すると、Webhook はビルドをトリガーします。
COMMIT_MESSAGE
フィルタは、GitHubプッシュおよびプルリクエストイベントと GitHub Enterprise Server のプッシュイベントで使用できます。GitHubEnterprise Server のプルリクエストイベントでは使用できません。
ウェブフックペイロードは、GitHubリポジトリのウェブフック設定で見つかります。
トピック
GitHubウェブフックイベントのフィルタリング (コンソール)
プライマリソースウェブフックイベントで、以下を選択します。このセクションは、ソースリポジトリのGitHub自分のアカウントで [Repository] を選択した場合にのみ使用できます。
-
プロジェクトの作成時に [コードの変更がこのレポジトリにプッシュされるたびに再構築する] を選択します。
-
[イベントタイプ] から、1 つ以上のイベントを選択します。
-
イベントでビルドをトリガーされた時間をフィルタリングするには、[これらの条件でビルドを開始する] で、1 つ以上のオプションフィルタを追加します。
-
イベントがトリガーされていない時間をフィルタリングするには、[これらの条件でビルドを開始しない] で、1 つ以上のオプションフィルタを追加します。
-
必要に応じて、[Add filter group (フィルタグループの追加)] を選択して、別のフィルタグループを追加します。
詳細については、ビルドプロジェクトの作成 (コンソール)API リファレンスWebhookFilterの AWS CodeBuildおよび を参照してください。
この例では、ウェブフックフィルタグループは、プルリクエストに対してのみビルドをトリガーします。

2 つのウェブフックフィルタグループの例を使用した場合、ビルドは一方または両方が true と評価されるとトリガーされます。
-
最初のフィルタグループでは、正規表現
^refs/heads/main$
と一致する Git 参照名および^refs/heads/branch1$
と一致するヘッド参照を持つブランチに対してプルリクエストを作成、更新、または再開することを指定します。 -
2 番目のフィルタグループでは、正規表現
^refs/heads/branch1$
に一致する Git 参照を含むブランチでプッシュリクエストを指定します。

この例では、ウェブフックフィルタグループは、タグイベントを除くすべてのリクエストに対してビルドをトリガーします。

この例では、ウェブフックフィルタグループは、正規表現 ^buildspec.*
に一致する名前のファイルが変更された場合にのみビルドをトリガーします。

この例では、指定したユーザーGitHubまたは GitHub Enterprise Server ユーザーが、正規表現に一致するアカウント ID を使用して変更を行った場合にのみ、ウェブフックフィルタグループがビルドをトリガーactor-account-id
します。
GitHubアカウント ID を見つける方法については、https://api.github.com/users/ を参照してください。user-name
次のとおりです。user-name
はGitHubユーザー名です。

この例では、HEAD コミットメッセージが正規表現 \[CodeBuild\]
に一致する場合に、Webhook フィルタグループがプッシュイベントのビルドをトリガーします。

GitHubウェブフックイベントのフィルタリング (SDK)
AWS CodeBuild SDK を使用してウェブフックイベントをフィルタリングするには、CreateWebhook
または UpdateWebhook
API メソッドのリクエスト構文の filterGroups
フィールドを使用します。詳細については、CodeBuild API リファレンスの「WebhookFilter」を参照してください。
プルリクエストに対してのみビルドをトリガーするウェブフックフィルタを作成するには、以下をリクエスト構文に挿入します。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" } ] ]
指定されたブランチに対してのみビルドをトリガーするウェブフックフィルタを作成するには、pattern
パラメータを使用して、ブランチ名をフィルタリングするよう正規表現を指定します。2 つのフィルタグループの例を使用した場合、ビルドは一方または両方が true と評価されるとトリガーされます。
-
最初のフィルタグループでは、正規表現
^refs/heads/main$
と一致する Git 参照名および^refs/heads/myBranch$
と一致するヘッド参照を持つブランチに対してプルリクエストを作成、更新、または再開することを指定します。 -
2 番目のフィルタグループでは、正規表現
^refs/heads/myBranch$
に一致する Git 参照を含むブランチでプッシュリクエストを指定します。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" }, { "type": "BASE_REF", "pattern": "^refs/heads/main$" } ], [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "HEAD_REF", "pattern": "^refs/heads/myBranch$" } ] ]
excludeMatchedPattern
パラメータを使用すると、ビルドをトリガーしないイベントを指定することができます。たとえば、この例で、ビルドは、タグイベントを除くすべてのリクエストに対してトリガーされます。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]
引数 pattern
の正規表現に一致する名前のファイルが変更される場合にのみビルドをトリガーするフィルタを作成することができます。この例のフィルタグループでは、正規表現 ^buildspec.*
に一致する名前のファイルが変更された場合にのみビルドをトリガーするよう指定します。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^buildspec.*" } ] ]
指定されたユーザーGitHubまたは GitHub Enterprise Server ユーザーがアカウント ID を使用して変更を行った場合にのみ、ビルドをトリガーするフィルタを作成できますactor-account-id
。
GitHubアカウント ID を見つける方法については、https://api.github.com/users/ を参照してください。user-name
次のとおりです。user-name
はGitHubユーザー名です。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, PULL_REQUEST_MERGED" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]
HEAD コミットメッセージがパターン引数の正規表現に一致する場合にのみビルドをトリガーするフィルタを作成できます。この例のフィルタグループでは、プッシュイベントの
HEAD コミットメッセージが正規表現 \[CodeBuild\]
に一致する場合にのみビルドをトリガーするよう指定します。
"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "COMMIT_MESSAGE", "pattern": "\[CodeBuild\]" } ] ]
GitHubウェブフックイベントのフィルタリング (AWS CloudFormation)
AWS CloudFormation テンプレートを使用してウェブフックイベントをフィルタリングするには、AWS CodeBuild プロジェクトの FilterGroups
プロパティを使用します。以下の YAML 形式の AWS CloudFormation テンプレート部分によって、2 つのフィルタグループが作成されます。また、一方または両方が
true と評価されると、ビルドがトリガーされます。
-
最初のフィルタグループでは、アカウント ID を持たない
^refs/heads/main$
ユーザーが正規表現と一致する Git GitHub 参照名を持つブランチに対してプルリクエストを作成または更新することを指定します。12345
-
2 番目のフィルタグループでは、正規表現
^refs/heads/.*
に一致する Git 参照名を持つブランチで正規表現READ_ME
に一致する名前のファイルに対してプッシュリクエストを作成することを指定します。 -
3 番目のフィルタグループでは、正規表現
\[CodeBuild\]
に一致する HEAD コミットメッセージを使用してプッシュリクエストを指定します。
CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole:
service-role
Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:4.0 Source: Type: GITHUB Location:source-location
Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED - Type: BASE_REF Pattern: ^refs/heads/main$ ExcludeMatchedPattern: false - Type: ACTOR_ACCOUNT_ID Pattern: 12345 ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: HEAD_REF Pattern: ^refs/heads/.* - Type: FILE_PATH Pattern: READ_ME ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE - Pattern: \[CodeBuild\]