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

Bitbucket ウェブフックイベント

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

複数のウェブフックフィルタグループを指定できます。複数のフィルタグループのフィルタが true と評価されると、ビルドがトリガーされます。フィルタグループを作成する際、以下を指定します。

イベント

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

  • PUSH

  • PULL_REQUEST_CREATED

  • PULL_REQUEST_UPDATED

  • PULL_REQUEST_MERGED

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

注記

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

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

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

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

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

ACTOR_ACCOUNT_ID( コンソールACTOR_IDの場合)

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

HEAD_REF

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

BASE_REF

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

FILE_PATH

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

COMMIT_MESSAGE

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

注記

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

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

AWS マネジメントコンソール を使用してウェブフックイベントをフィルタリングするには:

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

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

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

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

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

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

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

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

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

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

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

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

この例では、正規表現 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" } ] ]

指定されたブランチに対してのみビルドをトリガーするウェブフックフィルタを作成するには、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" }, { "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" }, { "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" }, { "type": "ACTOR_ACCOUNT_ID", "pattern": "actor-account-id" } ] ]

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

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

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 12345 を持たない Bitbucket ユーザーが、正規表現 ^refs/heads/main$ と一致する 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:4.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: EVENT Pattern: PUSH - Type: COMMIT_MESSAGE - Pattern: \[CodeBuild\]