GitHub Webhook 事件 - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

GitHub Webhook 事件

您可以使用 Webhook 筛选条件组指定哪些 GitHub Webhook 事件触发构建。例如,您可以指定仅为指定的分支触发构建。

您可以创建一个或多个 Webhook 筛选条件组,以指定哪些 Webhook 事件触发构建。如果一个或多个筛选条件组上的所有筛选条件都评估为 True,则会触发构建。创建筛选条件组时,应指定:

事件

对于 GitHub,您可以选择以下一个或多个事件: PUSHPULL_REQUEST_CREATEDPULL_REQUEST_UPDATEDPULL_REQUEST_REOPENEDPULL_REQUEST_MERGED。 webhook 事件类型位于 webhook 负载的 X-GitHub-Event 标头中。在 X-GitHub-Event 标头中,您可能会看到 pull_requestpush。 对于拉取请求事件,类型在 Webhook 事件负载的 action 字段中。下表显示了 X-GitHub-Event 标头值和 webhook 拉取请求负载 action 字段值如何映射到可用的事件类型。

X-GitHub-Event 标头值 Webhook 事件负载 action Event type
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 Enterprise Server 一起使用。GitHub

一个或多个可选筛选条件

使用正则表达式来指定筛选条件。对于触发构建的事件,与其关联的每个筛选条件都必须评估为 True。

ACTOR_ACCOUNT_ID (控制台中的 ACTOR_ID)

当 GitHub 或 GitHub Enterprise Server 账户 ID 与正则表达式模式匹配时,Webhook 事件会触发构建。此值在 webhook 负载中的 sender 对象的 id 属性中。

HEAD_REF

当头部引用与正则表达式模式(例如 refs/heads/branch-namerefs/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 Enterprise Server 推送事件一起使用。GitHub它不能与 GitHub Enterprise Server 拉取请求事件一起使用。

COMMIT_MESSAGE

当 HEAD 提交消息与正则表达式模式匹配时,Webhook 会触发构建。筛选条件可以与 COMMIT_MESSAGE 推送和拉取请求事件以及 GitHub Enterprise Server 推送事件一起使用。GitHub它不能与 GitHub Enterprise Server 拉取请求事件一起使用。

注意

您可以在 GitHub 存储库的 Webhook 设置中找到 Webhook 负载。

筛选 GitHub Webhook 事件(控制台)

Primary source webhook events (主要源 Webhook 事件) 中,选择以下内容。仅当您为源存储库选择 Repository in my GitHub account (我的 AWS 账户中的存储库) 时,此部分才可用。

  1. 创建项目时,选择 Rebuild every time a code change is pushed to this repository (每次将代码更改推送到此存储库时都会重新生成)

  2. Event type (事件类型) 中,选择一个或多个事件。

  3. 要在事件触发构建时进行筛选,请在 Start a build under these conditions (在这些条件下启动构建) 下,添加一个或多个可选筛选条件。

  4. 要在未触发事件时进行筛选,请在 Start a build under these conditions (在这些条件下不启动构建) 下,添加一个或多个可选筛选条件。

  5. 选择 Add filter group (添加筛选条件组) 以添加另一个筛选条件组(如果需要)。

有关更多信息,请参阅 创建构建项目 (控制台)API 参考 中的 WebhookFilter 和 AWS CodeBuild。

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

以两个 Webhook 筛选条件组为例,当一个或两个筛选条件评估为 True 时触发构建:

  • 第一个筛选条件组使用与正则表达式 ^refs/heads/main$ 匹配的 Git 引用名称以及与 ^refs/heads/branch1$ 匹配的头部引用,指定在分支上创建、更新或重新打开的拉取请求。

  • 第二个筛选条件组使用与正则表达式 ^refs/heads/branch1$ 匹配的 Git 引用名称,指定分支上的推送请求。

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

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

在此示例中,只有当其账户 ID 与正则表达式 GitHub 匹配的指定 GitHub 或 actor-account-id Enterprise Server 用户进行更改时,Webhook 筛选条件组才会触发构建。

注意

有关如何查找 GitHub 账户 ID 的信息,请参阅 https://api.github.com/users/user-name其中,user-name 是您的 GitHub 用户名。

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

筛选 GitHub Webhook 事件(开发工具包)

要使用 AWS CodeBuild 开发工具包筛选 Webhook 事件,请使用 CreateWebhookUpdateWebhook API 方法的请求语法中的 filterGroups 字段。有关更多信息,请参阅 CodeBuild API 参考 中的 WebhookFilter

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

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

要创建仅针对指定分支触发构建的 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" }, { "type": "HEAD_REF", "pattern": "^refs/tags/.*", "excludeMatchedPattern": true } ] ]

您可以创建只有当名称与 pattern 参数中的正则表达式匹配的文件发生更改时,才触发构建的筛选条件。在此示例中,筛选条件组指定仅当名称与正则表达式 ^buildspec.* 匹配的文件更改时才触发构建。

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

您可以创建仅当账户 ID 为 GitHub 的指定 GitHub 或 actor-account-id Enterprise Server 用户进行更改时,才触发构建的筛选条件。

注意

有关如何查找 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 Webhook 事件 (AWS CloudFormation)

要使用 AWS CloudFormation 模板来筛选 Webhook 事件,请使用 AWS CodeBuild 项目的 FilterGroups 属性。AWS CloudFormation 模板的以下 YAML 格式的部分创建两个筛选条件组。当这两个筛选条件的其中一个或两个评估为 True 时触发构建:

  • 第一个筛选条件组使用与正则表达式 ^refs/heads/main$ 匹配的 Git 引用名称,指定由账户 ID 不为 GitHub 的 12345 用户在分支上创建或更新的拉取请求。

  • 第二个筛选条件组使用与正则表达式 ^refs/heads/.* 匹配的 Git 引用名称,指定在名称与正则表达式 READ_ME 匹配的文件上创建的推送请求。

  • 第三个筛选条件组指定一个推送请求,其中包含与正则表达式 \[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\]