本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GitHub webhook 事件
您可以使用 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
字段值如何映射到可用的事件类型。X-GitHub-Event
标头值Webhook 事件负载 action
值事件类型 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
pull_request
closed
,并且merged
字段为false
PULL_REQUEST_CLOSED
push
不适用 PUSH
release
已发布 RELEASED
release
预先发行 PRERELEASED
workflow_job
queued WORKFLOW_JOB_QUEUED
注意
PULL_REQUEST_REOPENED
事件类型只能与 GitHub和 GitHub 企业服务器一起使用。RELEASED
PRERELEASED
、和WORKFLOW_JOB_QUEUED
事件类型 GitHub 只能与一起使用。有关WORKFLOW_JOB_QUEUED
的更多信息,请参阅 教程:配置 CodeBuild 自托管 GitHub 操作运行器。 - 一个或多个可选筛选条件
-
使用正则表达式来指定筛选条件。对于触发构建的事件,组内与其关联的每个筛选条件都必须评估为 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。 WORKFLOW_NAME
-
当工作流程名称与正则表达式模式匹配时,Webhook 会触发构建。
WORKFLOW_NAME
筛选器可以用于 Acti GitHub ons 工作流程任务队列请求事件。
注意
你可以在仓库的 webhook 设置中找到 webhook 有效负载。 GitHub
筛选 GitHub webhook 事件(控制台)
在主要源 webhook 事件中,选择以下内容。只有当您在我的 GitHub账户中为源存储库选择存储库时,此部分才可用。
-
创建项目时,选择每次将代码更改推送到此存储库时都会重新构建。
-
从事件类型中,选择一个或多个事件。
-
要在事件触发构建时进行筛选,请在在这些条件下开始构建下,添加一个或多个可选筛选条件。
-
要在未触发事件时进行筛选,请在在这些条件下不开始构建下,添加一个或多个可选筛选条件。
-
选择添加筛选条件组,以添加另一个筛选条件组(如果需要)。
有关更多信息,请参阅 “Amazon CodeBuild API参考” WebhookFilter中的 “创建构建项目(控制台)和”。
在此示例中,Webhook 筛选条件组仅针对拉取请求触发构建:
以两个 Webhook 筛选条件组为例,当一个或两个筛选条件评估为 True 时触发构建:
-
第一个筛选条件组使用与正则表达式
^refs/heads/main$
匹配的 Git 引用名称以及与^refs/heads/branch1$
匹配的头部引用,指定在分支上创建、更新或重新打开的拉取请求。 -
第二个筛选条件组使用与正则表达式
^refs/heads/branch1$
匹配的 Git 引用名称,指定分支上的推送请求。
在此示例中,Webhook 筛选条件组会针对除标记事件之外的所有请求触发构建。
在此示例中,仅当名称与正则表达式 ^buildspec.*
匹配的文件发生更改时,Webhook 筛选条件组才会触发构建。
在此示例中,仅当 src
或 test
文件夹中的文件发生更改时,Webhook 筛选条件组才会触发构建。
在此示例中,只有当帐户 ID 与正则表达式actor-account-id
匹配的指定用户 GitHub 或 GitHub 企业服务器用户进行更改时,Webhook 筛选器组才会触发构建。
注意
有关如何查找您的 GitHub 账户 ID 的信息,请参阅 https://api.github.com/users/user-name
其中,user-name
是您的 GitHub 用户名。
在本示例中,当 HEAD 提交消息与正则表达式 \[CodeBuild\]
匹配时,Webhook 筛选条件组会触发推送事件的构建。
在此示例中,webhook 筛选器组仅触发 Actions 工作 GitHub 流程作业事件的构建。
注意
CodeBuild 仅当 Webhook 具有包含 WORKFLOW_ JOB _ QUEUED 事件过滤器的筛选器组时,才会处理 GitHub 操作工作流作业。
在此示例中,webhook 筛选器组会触发与正则表达式CI-CodeBuild
匹配的工作流程名称的构建。
筛选 GitHub webhook 事件 () SDK
要使用过滤 webhook 事件,请使用CreateWebhook
或UpdateWebhook
API方法的请求语法中的filterGroups
字段。 Amazon CodeBuild SDK有关更多信息,请参阅 “CodeBuild API参考” WebhookFilter中的。
要创建仅针对拉取请求触发构建的 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
其中,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\]" } ] ]
要创建仅触发 Actions 工作流程任务生成的 GitHub webhook 过滤器,请在请求语法中插入以下内容:
"filterGroups": [ [ { "type": "EVENT", "pattern": "WORKFLOW_JOB_QUEUED" } ] ]
筛选 GitHub webhook 事件 ()Amazon CloudFormation
要使用 Amazon CloudFormation 模板过滤 webhook 事件,请使用 Amazon CodeBuild 项目的FilterGroups
属性。 Amazon 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\]