

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

# GitLab webhook 事件
<a name="gitlab-webhook"></a>

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

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

**事件**  
对于 GitLab，您可以选择以下一个或多个事件：`PUSH`、`PULL_REQUEST_CREATED`、`PULL_REQUEST_UPDATED`、`PULL_REQUEST_MERGED`、`PULL_REQUEST_REOPENED``PULL_REQUEST_CLOSED`、`RELEASED`、和`WORKFLOW_JOB_QUEUED`。  
webhook 的事件类型位于其在 `X-GitLab-Event` 字段中的标头中。下表显示了 `X-GitLab-Event` 标头值如何映射到事件类型。对于 `Merge Request Hook` webhook 事件，有效载荷的 `object_atttributes.action` 将包含有关合并请求类型的更多信息。  


<table>
<thead>
  <tr><th><code>X-GitLab-Event</code> 标头值</th><th><code>object_atttributes.action</code></th><th>事件类型</th></tr>
</thead>
<tbody>
  <tr><td><code>Push Hook</code></td><td>N/A</td><td><code>PUSH</code></td></tr>
  <tr><td><code>Merge Request Hook</code></td><td>打开</td><td><code>PULL_REQUEST_CREATED</code></td></tr>
  <tr><td><code>Merge Request Hook</code></td><td>更新</td><td><code>PULL_REQUEST_UPDATED</code></td></tr>
  <tr><td><code>Merge Request Hook</code></td><td>merge</td><td><code>PULL_REQUEST_MERGED</code></td></tr>
  <tr><td><code>Merge Request Hook</code></td><td>重新打开</td><td><code>PULL_REQUEST_REOPENED</code></td></tr>
  <tr><td><code>Merge Request Hook</code></td><td>关闭</td><td><code>PULL_REQUEST_CLOSED</code></td></tr>
  <tr><td><code>Release Hook</code></td><td>创建、更新</td><td><code>RELEASED</code></td></tr>
  <tr><td><code>Job Hook</code></td><td>N/A</td><td><code>WORKFLOW_JOB_QUEUED</code></td></tr>
</tbody>
</table>

对于 `PULL_REQUEST_MERGED`，如果拉取请求与压缩策略合并且拉取请求分支已关闭，则原始的拉取请求提交将不再存在。在这种情况下，`CODEBUILD_WEBHOOK_MERGE_COMMIT` 环境变量包含压缩后的合并提交的标识符。

**一个或多个可选筛选条件**  
使用正则表达式来指定筛选条件。对于触发构建的事件，组内与其关联的每个筛选条件都必须评估为 True。  
CodeBuild 使用RE2正则表达式语法评估过滤器模式，该语法不支持向前看、向后看、反向引用或原子组。有关更多信息，请参阅 GitHub 网站上的RE2[语法](https://github.com/google/re2/wiki/Syntax)页面。    
`ACTOR_ACCOUNT_ID`（控制台中的 `ACTOR_ID`）  
当 GitLab 账户 ID 与正则表达式模式匹配时，webhook 事件会触发构建。此值显示在 Webhook 筛选条件负载中的 `actor` 对象的 `account_id` 属性中。  
`HEAD_REF`  
当头部引用与正则表达式模式（例如 `refs/heads/branch-name` 和 `refs/tags/tag-name`）匹配时，Webhook 事件会触发构建。`HEAD_REF` 筛选条件将评估分支或标签的 Git 引用名称。分支或标签名称显示在 Webhook 负载的 `push` 对象中的 `new` 对象的 `name` 字段中。对于拉取请求事件，分支名称显示在 Webhook 负载中的 `source` 对象的 `branch` 中的 `name` 字段中。  
`BASE_REF`  
当基础引用与正则表达式模式匹配时，Webhook 事件会触发构建。`BASE_REF` 筛选条件仅处理拉取请求事件（例如，`refs/heads/branch-name`）。`BASE_REF` 筛选条件评估分支的 Git 引用名称。分支名称显示在 `branch` 对象的 `name` 字段中，该对象位于 Webhook 负载的 `destination` 对象中。  
`FILE_PATH`  
当更改的文件的路径与正则表达式模式匹配时，Webhook 会触发构建。  
根据推送或拉取请求中的前 100 个更改的文件对`FILE_PATH`过滤器进行评估。为确保按预期应用过滤器，请将更改的文件数量保持在该限制范围内。对于拉取请求事件，我们还建议使用拉取请求构建策略来控制哪些拉取请求可以启动构建。  
`COMMIT_MESSAGE`  
当 HEAD 提交消息与正则表达式模式匹配时，Webhook 会触发构建操作。  
`WORKFLOW_NAME`  
当工作流名称与正则表达式模式匹配时，Webhook 会触发构建操作。

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

**Topics**
+ [过滤 GitLab webhook 事件（控制台）](gitlab-webhook-events-console.md)
+ [过滤 GitLab webhook 事件 (SDK)](gitlab-webhook-events-sdk.md)
+ [过滤 GitLab webhook 事件 (Amazon CloudFormation)](gitlab-webhook-events-cfn.md)