GitHubウェブフックイベント - AWS CodeBuild

GitHubウェブフックイベント

Webhook フィルタグループを使用して、ビルドをトリガーする GitHub Webhook イベントを指定できます。たとえば、ビルドが指定されたブランチに対してのみトリガーされるように指定できます。

ビルドをトリガーするウェブフックイベントを指定するには、ウェブフックフィルタグループを 1 つ以上作成できます。1 つ以上のフィルタグループのフィルタがすべて true と評価されると、ビルドがトリガーされます。フィルタグループを作成する際、以下を指定します。

イベント

GitHubでは、以下のイベントを 1 つ以上選択できます。PUSHPULL_REQUEST_CREATEDPULL_REQUEST_UPDATEDPULL_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. プロジェクトの作成時に [コードの変更がこのレポジトリにプッシュされるたびに再構築する] を選択します。

  2. [イベントタイプ] から、1 つ以上のイベントを選択します。

  3. イベントでビルドをトリガーされた時間をフィルタリングするには、[これらの条件でビルドを開始する] で、1 つ以上のオプションフィルタを追加します。

  4. イベントがトリガーされていない時間をフィルタリングするには、[これらの条件でビルドを開始しない] で、1 つ以上のオプションフィルタを追加します。

  5. 必要に応じて、[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\]