

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# GitHub webhook 事件
<a name="github-webhook"></a>

您可以使用 webhook 筛选器组来指定哪些 GitHub Webhook 事件会触发构建。例如，您可以指定仅在对特定分支做出更改时触发构建。

您可以创建一个或多个 Webhook 筛选条件组，来指定哪些 Webhook 事件触发构建。如果任何筛选条件组评估为 true（即组中的所有筛选条件都评估为 true），则会触发构建。创建筛选条件组时，应指定：

**事件**  
对于 GitHub，您可以选择以下一个或多个事件：`PUSH`、`PULL_REQUEST_CREATED`、`PULL_REQUEST_UPDATED`、`PULL_REQUEST_REOPENED`、`PULL_REQUEST_MERGED`、`PULL_REQUEST_CLOSED``RELEASED`、`PRERELEASED`、和`WORKFLOW_JOB_QUEUED`。webhook 事件类型在 webhook 负载中的 `X-GitHub-Event` 标头中。在 `X-GitHub-Event` 标头中，您可能会看到 `pull_request` 或 `push`。对于拉取请求事件，类型在 webhook 事件负载的 `action` 字段中。下表显示了 `X-GitHub-Event` 标头值和 webhook 拉取请求负载 `action` 字段值如何映射到可用的事件类型。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/github-webhook.html)
 `PULL_REQUEST_REOPENED`事件类型只能与 GitHub和 GitHub 企业服务器一起使用。`RELEASED`和`PRERELEASED`事件类型 GitHub 只能与一起使用。有关 `WORKFLOW_JOB_QUEUED` 的更多信息，请参阅[教程：配置 CodeBuild托管的 GitHub 操作运行器](action-runner.md)。

**一个或多个可选筛选条件**  
使用正则表达式来指定筛选条件。对于触发构建的事件，组内与其关联的每个筛选条件都必须评估为 True。    
`ACTOR_ACCOUNT_ID`（控制台中的 `ACTOR_ID`）  
当 GitHub 或 GitHub企业服务器帐户 ID 与正则表达式模式匹配时，Webhook 事件会触发构建。此值在 webhook 负载中的 `sender` 对象的 `id` 属性中。  
`HEAD_REF`  
当头部引用与正则表达式模式（例如 `refs/heads/branch-name` 和 `refs/tags/tag-name`）匹配时，Webhook 事件会触发构建。对于推送事件，引用名称在 Webhook 负载中的 `ref` 属性中。对于拉取请求事件，分支名称在 Webhook 负载中的 `head` 对象的 `ref` 属性中。  
`BASE_REF`  
当基本引用与正则表达式模式（例如 `refs/heads/branch-name`）匹配时，Webhook 事件会触发构建。`BASE_REF` 筛选器只能与拉取请求事件一起使用。分支名称在 webhook 负载中的 `base` 对象的 `ref` 属性中。  
`FILE_PATH`  
当更改的文件的路径与正则表达式模式匹配时，Webhook 会触发构建。`FILE_PATH`筛选器可用于 GitHub 推送和拉取请求事件以及 GitHub企业服务器推送事件。它不能用于 GitHub企业服务器拉取请求事件。  
`COMMIT_MESSAGE`  
当 HEAD 提交消息与正则表达式模式匹配时，Webhook 会触发构建操作。`COMMIT_MESSAGE`筛选器可用于 GitHub 推送和拉取请求事件以及 GitHub企业服务器推送事件。它不能用于 GitHub企业服务器拉取请求事件。  
`TAG_NAME`  
当发布的标签名称与正则表达式模式匹配时，webhook 会触发构建操作。`TAG_NAME`过滤器可用于 GitHub 已发布和预发布的请求事件。  
`RELEASE_NAME`  
当发布名称与正则表达式模式匹配时，webhook 会触发构建操作。`RELEASE_NAME`过滤器可用于 GitHub 已发布和预发布的请求事件。  
`REPOSITORY_NAME`  
当存储库名称与正则表达式模式匹配时，webhook 会触发构建操作。`REPOSITORY_NAME`过滤器只能用于 GitHub 全局或组织 webhook。  
`ORGANIZATION_NAME`  
当组织名称与正则表达式模式匹配时，webhook 会触发构建。`ORGANIZATION_NAME`过滤器只能用于 GitHub 全局 webhook。  
`WORKFLOW_NAME`  
当工作流名称与正则表达式模式匹配时，Webhook 会触发构建操作。`WORKFLOW_NAME`筛选器可以用于 Acti GitHub ons 工作流程任务队列请求事件。

**注意**  
你可以在仓库的 webhook 设置中找到 webhook 有效负载。 GitHub 

**Topics**
+ [

# 筛选 GitHub webhook 事件（控制台）
](github-webhook-events-console.md)
+ [

# 筛选 GitHub webhook 事件 (SDK)
](github-webhook-events-sdk.md)
+ [

# 筛选 GitHub webhook 事件 ()CloudFormation
](github-webhook-events-cfn.md)

# 筛选 GitHub webhook 事件（控制台）
<a name="github-webhook-events-console"></a>

按照以下说明使用过滤 GitHub webhook 事件。 AWS 管理控制台有关 GitHub webhook 事件的更多信息，请参阅[GitHub webhook 事件](github-webhook.md)。

在**主要源 webhook 事件**中，选择以下内容。只有当您在**我的 GitHub账户中为源存储库选择存储库**时，此部分才可用。

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)。

在此示例中，Webhook 筛选条件组仅针对拉取请求触发构建：

![\[一个 webhook 筛选条件组，仅针对拉取请求触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter.png)


以两个 Webhook 筛选条件组为例，当一个或两个筛选条件评估为 True 时触发构建：
+ 第一个筛选条件组使用与正则表达式 `^refs/heads/main$` 匹配的 Git 引用名称以及与 `^refs/heads/branch1$` 匹配的头部引用，指定在分支上创建、更新或重新打开的拉取请求。
+ 第二个筛选条件组使用与正则表达式 `^refs/heads/branch1$` 匹配的 Git 引用名称，指定分支上的推送请求。

![\[两个筛选条件组的示例。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-head-base-regexes.png)


在此示例中，Webhook 筛选条件组会针对除标记事件之外的所有请求触发构建。

![\[一个 webhook 筛选条件组，针对除标记事件之外的所有请求触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-exclude.png)


在此示例中，仅当名称与正则表达式 `^buildspec.*` 匹配的文件发生更改时，Webhook 筛选条件组才会触发构建。

![\[一个 webhook 筛选条件组，仅当文件名称与指定的正则表达式匹配时才会触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-file-name-regex.png)


在此示例中，仅当 `src` 或 `test` 文件夹中的文件发生更改时，Webhook 筛选条件组才会触发构建。

![\[一个 webhook 筛选条件组，仅当指定文件夹中的文件发生更改时才会触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-file-name-combined-regex.png)


在此示例中，只有当帐户 ID 与正则表达式`actor-account-id`匹配的指定用户 GitHub 或 GitHub 企业服务器用户进行更改时，Webhook 筛选器组才会触发构建。

**注意**  
 有关如何查找您的 GitHub 账户 ID 的信息，请参阅 https://api.github.com/users/*user-name*，您的 GitHub 用户名在*user-name*哪里。

![\[一个 webhook 过滤器组，只有当账户 ID 与正则表达式匹配的指定 GitHub 用户进行更改时才会触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-actor.png)


在本示例中，当 HEAD 提交消息与正则表达式 `\[CodeBuild\]` 匹配时，Webhook 筛选条件组会触发推送事件的构建。

![\[一个 webhook 筛选条件组，当 HEAD 提交消息与正则表达式匹配时会触发推送事件的构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/pull-request-webhook-filter-commit-message.png)


在此示例中，webhook 筛选器组仅触发 Actions 工作 GitHub 流程作业事件的构建。

**注意**  
CodeBuild 仅当 Webhook 具有包含 WORKFLOW\$1JOB **\$1QUEUED 事件过滤器的筛选器组时，才会处理 GitHub 操作工作流作**业。

![\[Webhook 筛选器组仅触发 GitHub 操作工作流程作业事件的构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/github-actions-workflow-job-queued-no-highlight.png)


在此示例中，当工作流名称与正则表达式 `CI-CodeBuild` 匹配时，webhook 筛选条件组才会触发构建。

![\[一个 webhook 筛选条件组，当工作流名称与正则表达式匹配时才会触发构建。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/github-actions-workflow-job-specific.png)


# 筛选 GitHub webhook 事件 (SDK)
<a name="github-webhook-events-sdk"></a>

要使用 AWS CodeBuild SDK 筛选 webhook 事件，请使用`CreateWebhook`或 `UpdateWebhook` API 方法的请求语法中的`filterGroups`字段。有关更多信息，请参阅《CodeBuild API Reference》**中的 [WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)。

有关 GitHub webhook 事件的更多信息，请参阅[GitHub webhook 事件](github-webhook.md)。

 要创建仅针对拉取请求触发构建的 Webhook 筛选条件，请在请求语法中插入以下内容：

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

 要创建仅针对指定分支触发构建的 Webhook 筛选条件，请使用 `pattern` 参数指定用于筛选分支名称的正则表达式。以两个筛选条件组为例，当一个或两个筛选条件评估为 True 时触发构建：
+ 第一个筛选条件组使用与正则表达式 `^refs/heads/main$` 匹配的 Git 引用名称以及与 `^refs/heads/myBranch$` 匹配的头部引用，指定在分支上创建、更新或重新打开的拉取请求。
+ 第二个筛选条件组使用与正则表达式 `^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/.+"
        }
    ]
]
```

您可以创建仅当具有帐户 ID 的指定用户 GitHub 或 E GitHub nterprise Server 用户进行更改时才会触发构建的筛选器`actor-account-id`。

**注意**  
 有关如何查找您的 GitHub 账户 ID 的信息，请参阅 https://api.github.com/users/*user-name*，您的 GitHub 用户名在*user-name*哪里。

```
"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\]"
        }
    ]
]
```

要创建仅触发 Actions 工作流程任务生成的 GitHub webhook 过滤器，请在请求语法中插入以下内容：

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

# 筛选 GitHub webhook 事件 ()CloudFormation
<a name="github-webhook-events-cfn"></a>

 要使用 CloudFormation 模板过滤 webhook 事件，请使用 AWS CodeBuild 项目的`FilterGroups`属性。

有关 GitHub webhook 事件的更多信息，请参阅[GitHub webhook 事件](github-webhook.md)。

 CloudFormation 模板的以下 YAML 格式的部分创建两个筛选条件组。当这两个筛选条件的其中一个或两个评估为 True 时触发构建：
+  第一个筛选器组指定`^refs/heads/main$`由没有账户 ID 的 GitHub 用户在具有与正则表达式匹配的 Git 引用名称的分支上创建或更新拉取请求`12345`。
+  第二个筛选条件组使用与正则表达式 `^refs/heads/.*` 匹配的 Git 引用名称，指定在名称与正则表达式 `READ_ME` 匹配的文件上创建的推送请求。
+ 第三个筛选条件组指定一个推送请求，其中包含与正则表达式 `\[CodeBuild\]` 匹配的 HEAD 提交消息。
+ 第四个筛选器组指定 Act GitHub ions 工作流任务请求，其工作流程名称与正则表达式匹配`\[CI-CodeBuild\]`。

```
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\]
```