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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Bitbucket ウェブフックイベント

Webhook フィルタグループを使用して、ビルドをトリガーする Bitbucket ウェブフックイベントを指定できます。たとえば、特定のブランチへの変更に対してのみビルドをトリガーするように指定できます。

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

イベント

Bitbucket では、次のイベントのうち、1 つ以上を選択できます:

  • PUSH

  • PULL_REQUEST_CREATED

  • PULL_REQUEST_UPDATED

  • PULL_REQUEST_MERGED

  • PULL_REQUEST_CLOSED

ウェブフックのイベントタイプは、X-Event-Key フィールドのヘッダーに含まれています。次の表に、X-Event-Key ヘッダー値がイベントタイプにマッピングされる方法を示します。

注記

PULL_REQUEST_MERGED イベントタイプを使用するウェブフックフィルタグループを作成する場合は、Bitbucket ウェブフック設定で merged イベントを有効にする必要があります。また、 declinedイベントタイプを使用するウェブフックフィルタグループを作成する場合は、Bitbucket ウェブフック設定で PULL_REQUEST_CLOSEDイベントを有効にする必要があります。

X-Event-Key ヘッダー値 イベントタイプ
repo:push PUSH
pullrequest:created PULL_REQUEST_CREATED
pullrequest:updated PULL_REQUEST_UPDATED
pullrequest:fulfilled PULL_REQUEST_MERGED
pullrequest:rejected PULL_REQUEST_CLOSED

PULL_REQUEST_MERGED の場合、プルリクエストがスカッシュ戦略とマージされ、プルリクエストブランチが閉じられると、元のプルリクエストコミットは存在しなくなります。この場合、CODEBUILD_WEBHOOK_MERGE_COMMIT 環境変数には、圧縮されたマージコミットの識別子が含まれます。

1 つ以上のオプションフィルタ

フィルタを指定するには、正規表現を使用します。ビルドをトリガーするイベントでは、関連付けられているグループ内のすべてのフィルターが true と評価される必要があります。

ACTOR_ACCOUNT_ID (コンソール内の ACTOR_ID)

Bitbucket アカウント ID が正規表現パターンと一致すると、ビルドがウェブフックイベントでトリガーされます。この値は、ウェブフックフィルタペイロードの actor オブジェクトの account_id プロパティに表示されます。

HEAD_REF

ヘッドリファレンスが正規表現パターンと一致すると (refs/heads/branch-namerefs/tags/tag-name など)、ウェブフックイベントによってビルドがトリガーされます。HEAD_REF フィルタは、ブランチまたはタグについて Git 参照名を評価します。ブランチ名またはタグ名は、ウェブフックペイロードの push オブジェクトにある、new オブジェクトの name フィールドに表示されます。プルリクエストイベントの場合、ブランチ名はウェブフックペイロードの source オブジェクトにある、branch オブジェクトの name フィールドに表示されます。

BASE_REF

基本参照が正規表現パターンと一致すると、ビルドがウェブフックイベントでトリガーされます。BASE_REF フィルタは、プルリクエストイベントでのみ使用できます (例: refs/heads/branch-name)。BASE_REF フィルタは、ブランチの Git 参照名を評価します。ブランチ名は、ウェブフックペイロードの destination オブジェクトにある、branch オブジェクトの name フィールドに表示されます。

FILE_PATH

変更されたファイルのパスが正規表現パターンに一致すると、ビルドが Webhook イベントでトリガーされます。

COMMIT_MESSAGE

HEAD コミットメッセージが正規表現パターンに一致する場合に、Webhook はビルドをトリガーします。

注記

ウェブフックペイロードは、Bitbucket リポジトリのウェブフック設定で見つかります。

Bitbucket ウェブフックイベントのフィルタリング (コンソール)

を使用してウェブフックイベント AWS Management Console をフィルタリングするには:

  1. プロジェクトの作成時に [コードの変更がこのレポジトリにプッシュされるたびに再構築する] を選択します。

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

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

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

  5. 別のフィルタグループを追加するには、[フィルタグループの追加] を選択します。

詳細については、「AWS CodeBuild API リファレンス」の「ビルドプロジェクトの作成 (コンソール)」および「WebhookFilter」を参照してください。

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

2 つのフィルタグループの例を使用した場合、ビルドは一方または両方が true と評価されるとトリガーされます。

  • 最初のフィルタグループでは、正規表現 ^refs/heads/main$ に一致する Git 参照と ^refs/heads/branch1! に一致するヘッド参照を含むブランチで作成または更新されたプルリクエストを指定します。

  • 2 番目のフィルタグループでは、正規表現 ^refs/heads/branch1$ に一致する Git 参照を含むブランチでプッシュリクエストを指定します。

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

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

この例で、Webhook フィルターグループは、ファイルが src または test フォルダーで変更された場合にのみ、ビルドをトリガーします。

この例では、正規表現 actor-account-id と一致するアカウント ID を持たない Bitbucket ユーザーが変更を行った場合にのみ、ウェブフックフィルタグループがビルドをトリガーします。

注記

Bitbucket アカウント ID の検索方法については、「https://api.bitbucket.org/2.0/users/user-name」を参照してください。ここで、user-name は、Bitbucket のユーザー名を表します。

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

Bitbucket ウェブフックイベントのフィルタリング (SDK)

AWS CodeBuild SDK を使用してウェブフックイベントをフィルタリングするには、 CreateWebhookまたは UpdateWebhook API メソッドのリクエスト構文で filterGroupsフィールドを使用します。詳細については、CodeBuild API リファレンスWebhookFilter を参照してください。

プルリクエストに対してのみビルドをトリガーするウェブフックフィルタを作成するには、以下をリクエスト構文に挿入します。

"filterGroups": [ [ { "type": "EVENT", "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" } ] ]

指定されたブランチに対してのみビルドをトリガーするウェブフックフィルタを作成するには、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_CLOSED" }, { "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_MERGED, PULL_REQUEST_CLOSED" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]

アカウント ID actor-account-id を持つ Bitbucket ユーザーによって変更が行われた場合にのみビルドをトリガーするフィルタを作成できます。

注記

Bitbucket アカウント ID の検索方法については、「https://api.bitbucket.org/2.0/users/user-name」を参照してください。ここで、user-name は、Bitbucket のユーザー名を表します。

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_MERGED, PULL_REQUEST_CLOSED" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]

引数 pattern の正規表現に一致する名前のファイルが変更される場合にのみビルドをトリガーするフィルタを作成することができます。この例のフィルタグループでは、正規表現 ^buildspec.* に一致する名前のファイルが変更された場合にのみビルドをトリガーするよう指定します。

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^buildspec.*" } ] ]

この例で、フィルターグループは、ファイルが src または test フォルダーで変更された場合にのみ、ビルドをトリガーするように指定しています。

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "FILE_PATH", "pattern": "^src/.+|^test/.+" } ] ]

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

"filterGroups": [ [ { "type": "EVENT", "pattern": "PUSH" }, { "type": "COMMIT_MESSAGE", "pattern": "\[CodeBuild\]" } ] ]

Bitbucket ウェブフックイベントのフィルタリング (AWS CloudFormation)

AWS CloudFormation テンプレートを使用してウェブフックイベントをフィルタリングするには、 AWS CodeBuild プロジェクトの FilterGroupsプロパティを使用します。以下の YAML 形式の AWS CloudFormation テンプレート部分によって、2 つのフィルタグループが作成されます。また、一方または両方が true と評価されると、ビルドがトリガーされます。

  • 最初のフィルタグループでは、アカウント ID ^refs/heads/main$ を持たない Bitbucket ユーザーが、正規表現 12345 と一致する Git 参照名を持つブランチに対してプルリクエストを作成または更新することを指定します。

  • 2 番目のフィルタグループでは、正規表現 ^refs/heads/.* と一致する Git 参照名を持つブランチに対するプッシュリクエストを作成することを指定します。

  • 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:5.0 Source: Type: BITBUCKET 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\] - Type: FILE_PATH Pattern: ^src/.+|^test/.+