

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

# GitHub ウェブフックイベント
<a name="github-webhook"></a>

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

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

**イベント**  
GitHub では、次のイベントのうち、1 つ以上を選択できます: `PUSH`、`PULL_REQUEST_CREATED`、`PULL_REQUEST_UPDATED`、`PULL_REQUEST_REOPENED`、`PULL_REQUEST_MERGED`、`PULL_REQUEST_CLOSED`、`RELEASED`、`PRERELEASED`、`WORKFLOW_JOB_QUEUED`。ウェブフックのイベントタイプは、ウェブフックペイロードの `X-GitHub-Event` ヘッダーに含まれています。`X-GitHub-Event` ヘッダーで、`pull_request` または `push` が表示される場合があります。プルリクエストイベントの場合、このタイプはウェブフックイベントペイロードの `action` フィールドに含まれています。以下の表に示すのは、`X-GitHub-Event` ヘッダー値とウェブフックのプルリクエストペイロードの `action` フィールドが、利用可能なイベントタイプにマッピングされる方法を示しています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/github-webhook.html)
 `PULL_REQUEST_REOPENED` イベントタイプは GitHub および GitHub Enterprise Server でのみ使用できます。`RELEASED` および `PRERELEASED` イベントタイプは、GitHub のみで使用できます。`WORKFLOW_JOB_QUEUED` の詳細については、「[チュートリアル: CodeBuild がホストする GitHub Actions ランナーを設定](action-runner.md)」をご参照ください。

**1 つ以上のオプションフィルタ**  
フィルタを指定するには、正規表現を使用します。ビルドをトリガーするイベントでは、関連付けられているグループ内のすべてのフィルターが true と評価される必要があります。    
`ACTOR_ACCOUNT_ID` (コンソール内の `ACTOR_ID`)  
GitHub、GitHub Enterprise サーバーのアカウント ID が正規表現 パターンと一致すると、Webhook イベントによってビルドがトリガーされます。この値は、ウェブフックペイロードの `sender` オブジェクトの `id` プロパティで見つかります。  
`HEAD_REF`  
ヘッドリファレンスが正規表現パターンと一致すると、ウェブフックイベントによりビルドがトリガーされます (例: `refs/heads/branch-name` または `refs/tags/tag-name`)。プッシュイベントの場合、参照名はウェブフックペイロードの `ref` プロパティで見つかります。プルリクエストイベントの場合、ブランチ名はウェブフックペイロードの `head` オブジェクトの `ref` プロパティで見つかります。  
`BASE_REF`  
基本参照が正規表現パターンと一致するとウェブフックイベントによってビルドがトリガーされます。(例 `refs/heads/branch-name`) `BASE_REF` フィルタは、プルリクエストイベントでのみ使用できます。ブランチ名は、ウェブフックペイロードで `base` オブジェクトの `ref` プロパティで見つかります。  
`FILE_PATH`  
変更されたファイルのパスが正規表現パターンと一致すると、ビルドがウェブフックイベントでトリガーされます。`FILE_PATH` フィルタは、GitHub のプッシュおよびプルリクエストイベントと GitHub Enterprise Server のプッシュイベントで使用できます。GitHub Enterprise Server のプルリクエストイベントでは使用できません。  
`COMMIT_MESSAGE`  
HEAD コミットメッセージが正規表現パターンに一致する場合に、Webhook はビルドをトリガーします。`COMMIT_MESSAGE` フィルタは、GitHub のプッシュおよびプルリクエストイベントと GitHub Enterprise Server のプッシュイベントで使用できます。GitHub Enterprise Server のプルリクエストイベントでは使用できません。  
`TAG_NAME`  
リリースのタグ名が正規表現パターンに一致すると、ウェブフックはビルドをトリガーします。`TAG_NAME` フィルタは、GitHub リリースおよびプレリリースされたリクエストイベントで使用できます。  
`RELEASE_NAME`  
リリース名が正規表現パターンに一致すると、ウェブフックはビルドをトリガーします。`RELEASE_NAME` フィルタは、GitHub リリースおよびプレリリースされたリクエストイベントで使用できます。  
`REPOSITORY_NAME`  
リポジトリ名が正規表現パターンに一致すると、ウェブフックはビルドをトリガーします。`REPOSITORY_NAME` フィルタは、GitHub グローバルまたは組織のウェブフックでのみ使用できます。  
`ORGANIZATION_NAME`  
組織名が正規表現パターンに一致する場合に、ウェブフックはビルドをトリガーします。`ORGANIZATION_NAME` フィルタは、GitHub グローバルウェブフックでのみ使用できます。  
`WORKFLOW_NAME`  
ワークフロー名が正規表現パターンに一致する場合に、ウェブフックはビルドをトリガーします。`WORKFLOW_NAME` フィルタは、GitHub Actions ワークフロージョブのキューに入れられたリクエストイベントで使用できます。

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

**Topics**
+ [

# GitHub ウェブフックイベントのフィルタリング (コンソール)
](github-webhook-events-console.md)
+ [

# GitHub ウェブフックイベントのフィルタリング (SDK)
](github-webhook-events-sdk.md)
+ [

# GitHub ウェブフックイベントのフィルタリング (CloudFormation)
](github-webhook-events-cfn.md)

# GitHub ウェブフックイベントのフィルタリング (コンソール)
<a name="github-webhook-events-console"></a>

 AWS マネジメントコンソールを使用して GitHub ウェブフックイベントをフィルタリングするには、次の手順を使用します。GitHub ウェブフックイベントの詳細については、「[GitHub ウェブフックイベント](github-webhook.md)」を参照してください。

[**プライマリソース Webhook イベント**] で、以下を選択します。このセクションは、ソースリポジトリで **[GitHub アカウントのリポジトリ]** を選択した場合のみに表示されます｡

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

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

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

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

1. 別のフィルタグループを追加する必要がある場合、[**フィルタグループの追加**] を選択します。

 詳細については、「*AWS CodeBuild API リファレンス*」の「[ビルドプロジェクトの作成 (コンソール)](create-project.md#create-project-console)」および「[WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)」を参照してください。

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

![\[プルリクエストのみのビルドをトリガーするウェブフックフィルタグループ。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter.png)


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

![\[2 つのフィルタグループの例です。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-head-base-regexes.png)


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

![\[タグイベントを除くすべてのリクエストに対してビルドをトリガーする、ウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-exclude.png)


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

![\[指定された正規表現に一致する名前のファイルに対してのみビルドをトリガーする、ウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-file-name-regex.png)


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

![\[指定されたフォルダ内でファイルが変更された場合にのみビルドをトリガーする、ウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-file-name-combined-regex.png)


この例では、指定した GitHub ユーザーや GitHub Enterprise Server ユーザーが、正規表現 `actor-account-id` と一致するアカウント ID を使用して変更を行った場合にのみ、Webhook フィルタグループがビルドをトリガーします。

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

![\[ウェブフックフィルタグループは、指定された GitHub ユーザーが正規表現と一致するアカウント ID を使用して変更を行った場合にのみ、ビルドをトリガーします。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-actor.png)


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

![\[HEAD コミットメッセージが正規表現に一致する場合に、プッシュイベントのビルドをトリガーするウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/pull-request-webhook-filter-commit-message.png)


この例では、ウェブフックフィルタグループは GitHub Actions ワークフロージョブイベントのみのビルドをトリガーします。

**注記**  
CodeBuild は、ウェブフックに **[WORKFLOW\$1JOB\$1QUEUED]** イベントフィルタを含むフィルタグループがある場合にのみ、GitHub Actions ワークフロージョブを処理します。

![\[GitHub Actions ワークフロージョブイベントのみのビルドをトリガーするウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/github-actions-workflow-job-queued-no-highlight.png)


この例では、ウェブフックフィルタグループが、正規表現 `CI-CodeBuild` に一致するワークフロー名のビルドをトリガーします。

![\[正規表現に一致するワークフロー名のビルドをトリガーするウェブフックフィルタグループです。\]](http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/images/github-actions-workflow-job-specific.png)


# GitHub ウェブフックイベントのフィルタリング (SDK)
<a name="github-webhook-events-sdk"></a>

 AWS CodeBuild SDK を使用してウェブフックイベントをフィルタリングするには、 `CreateWebhook`または `UpdateWebhook` API メソッドのリクエスト構文で `filterGroups`フィールドを使用します。詳細については、*CodeBuild API リファレンス*の「[WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)」を参照してください。

GitHub ウェブフックイベントの詳細については、「[GitHub ウェブフックイベント](github-webhook.md)」を参照してください。

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

```
"filterGroups": [
   [
        {
            "type": "EVENT", 
            "pattern": "PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED, PULL_REQUEST_REOPENED, 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_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, PULL_REQUEST_CLOSED"
        },
        {
            "type": "HEAD_REF", 
            "pattern": "^refs/tags/.*", 
            "excludeMatchedPattern": true
        }
    ]
]
```

引数 `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/.+"
        }
    ]
]
```

指定した 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, PULL_REQUEST_CLOSED"
        },
        {
            "type": "ACTOR_ACCOUNT_ID", 
            "pattern": "actor-account-id"
        }
    ]
]
```

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

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

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

```
"filterGroups": [
   [
        {
            "type": "EVENT", 
            "pattern": "WORKFLOW_JOB_QUEUED"
        }
    ]
]
```

# GitHub ウェブフックイベントのフィルタリング (CloudFormation)
<a name="github-webhook-events-cfn"></a>

 CloudFormation テンプレートを使用してウェブフックイベントをフィルタリングするには、 AWS CodeBuild プロジェクトの `FilterGroups`プロパティを使用します。

GitHub ウェブフックイベントの詳細については、「[GitHub ウェブフックイベント](github-webhook.md)」を参照してください。

以下の YAML 形式の CloudFormation テンプレート部分によって、2 つのフィルタグループが作成されます。また、一方または両方が true と評価されると、ビルドがトリガーされます。
+  最初のフィルタグループでは、アカウント ID `^refs/heads/main$` を持たない GitHub ユーザーが、正規表現 `12345` と一致する Git 参照名を持つブランチに対してプルリクエストを作成または更新することを指定します。
+  2 番目のフィルターグループでは、正規表現 `READ_ME` に一致する Git 参照名を持つブランチで正規表現 `^refs/heads/.*` に一致する名前のファイルに対してプッシュリクエストが作成されることを指定します。
+ 3 番目のフィルタグループでは、正規表現 `\[CodeBuild\]` に一致する HEAD コミットメッセージを使用してプッシュリクエストを指定します。
+ 4 番目のフィルタグループは、正規表現 `\[CI-CodeBuild\]` に一致するワークフロー名を持つ GitHub Actions ワークフロージョブリクエストを指定します。

```
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: 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\]
          - Type: FILE_PATH
            Pattern: ^src/.+|^test/.+
        - - Type: EVENT
            Pattern: WORKFLOW_JOB_QUEUED
          - Type: WORKFLOW_NAME
            Pattern: \[CI-CodeBuild\]
```