

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

# GitLab 群组 webhook
<a name="gitlab-group-webhook"></a>

您可以使用 CodeBuild GitLab 群组 webhook 在群组内任何存储库的 webhook 事件上启动构建。 GitLab 群组 webhook 可与任何现有的 GitLab webhook 事件类型配合使用，并且可以通过在创建 webhook 时添加范围配置来进行配置。 CodeBuild 您还可以使用群组 webhook 在[其中设置自托管的 GitLab运行器，以便 CodeBuild在单个项目中](gitlab-runner.md)接收来自多个存储库`WORKFLOW_JOB_QUEUED`的事件。

**Topics**
+ [设置群组 GitLab webhook](gitlab-group-webhook-setup.md)
+ [筛选 GitLab 群组 webhook 事件（控制台）](gitlab-group-webhook-events-console.md)
+ [筛选 GitLab 群组 webhook 事件 ()CloudFormation](gitlab-group-webhook-events-cfn.md)

# 设置群组 GitLab webhook
<a name="gitlab-group-webhook-setup"></a>

设置群组 GitLab webhook 的高级步骤如下。有关群组 GitLab webhook 的更多信息，请参阅[GitLab 群组 webhook](gitlab-group-webhook.md)。

1. 将项目的源位置设置为 `CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`。

1. 在 webhook 的范围配置中，将范围设置为 `GITLAB_GROUP`。

1. 在 webhook 的范围配置过程中指定一个名称。对于组 webhook，这是组名称。
**注意**  
如果项目的源类型为 `GITLAB_SELF_MANAGED`，则还需要在 webhook 范围配置过程中指定一个域。

1. （可选）如果您只想接收组织或企业内特定存储库的 webhook 事件，则可以在创建 webhook 时将 `REPOSITORY_NAME` 指定为筛选条件。

1. 创建群组 webhook 时，请确保该群组 CodeBuild 有权在群组内创建群组级 Webhook。 GitLab CodeBuild OAuth 但要做到这一点，你可以使用 CodeConnections。有关更多信息，请参阅 [GitLab 进入 CodeBuild](access-tokens-gitlab-overview.md)。

   请注意，群组 webhook 适用于任何现有的 GitLab webhook 事件类型。

# 筛选 GitLab 群组 webhook 事件（控制台）
<a name="gitlab-group-webhook-events-console"></a>

通过控制台创建 GitLab 项目时，请选择以下选项在项目中创建 GitLab 群组 webhook。有关群组 GitLab webhook 的更多信息，请参阅[GitLab 群组 webhook](gitlab-group-webhook.md)。

1. 在 [https://console.aws.amazon.com/codesuite/codebuild](https://console.aws.amazon.com/codesuite/codebuild/home) /home 中打开 AWS CodeBuild 控制台。

1. 创建构建项目。有关信息，请参阅[创建构建项目（控制台）](create-project.md#create-project-console)和[运行构建（控制台）](run-build-console.md)。
   +  在**源**中：
     +  对于**源提供商**，请选择**GitLab**或**GitLab自行管理**。
     +  对于 “**存储库**”，选择 **GitLabscoped webhoo** k。

        GitLab 存储库将自动设置为`CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`，这是群组 webhook 所需的源位置。
**注意**  
使用群组 webhook 时，请确保该群组 CodeBuild 有权在群组内创建群组级 webhook。 GitLab如果您使用的是[现有 OAuth连接](access-tokens-gitlab-overview.md#connections-gitlab)，则可能需要重新生成连接才能授予 CodeBuild 此权限。  
![\[GitLab 限定作用域的 webhook 的配置。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/gitlab-group-source.png)
   +  在**主要源 Webhook 事件**中：
     +  在**组名称**中，输入组名称。

       如果项目的源类型为 `GITLAB_SELF_MANAGED`，则还需要在 webhook 组配置过程中指定一个域。例如，如果组的 URL 是 **https://domain.com/group/group-name**，则域是 **https://domain.com**。
**注意**  
 创建 webhook 后不能更改此名称。要更改名称，您可以删除并重新创建 webhook。如果要完全移除 webhook，也可以将项目源位置更新为 GitLab存储库。  
![\[组 webhook 的配置。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/gitlab-group-webhook-primary-events.png)
     +  （可选）在 **webhook 事件筛选条件组**中，您可以指定[要触发新构建的事件](gitlab-webhook.md)。您也可以指定 `REPOSITORY_NAME` 作为筛选条件，仅根据来自特定存储库的 webhook 事件触发构建。  
![\[仅根据来自特定存储库的 webhook 事件触发构建的筛选条件。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/github-organization-webhook-filter-groups.png)

       您也可以将事件类型设置为`WORKFLOW_JOB_QUEUED`以设置自托管的 GitLab 运行器。有关更多信息，请参阅 [自我管理的 GitLab 跑步者在 AWS CodeBuild](gitlab-runner.md)。

1. 继续使用默认值，然后选择**创建构建项目**。

# 筛选 GitLab 群组 webhook 事件 ()CloudFormation
<a name="gitlab-group-webhook-events-cfn"></a>

 要使用 CloudFormation 模板来筛选群组 webhook 事件，请使用 AWS CodeBuild 项目的`ScopeConfiguration`属性。有关群组 GitLab webhook 的更多信息，请参阅[GitLab 群组 webhook](gitlab-group-webhook.md)。

 CloudFormation 模板中以下 YAML 格式的部分创建了四个筛选器组。当这些筛选条件组的其中一个或全部评估为 True 时触发构建：
+  第一个筛选器组指定`^refs/heads/main$`由没有账户 ID 的 GitLab 用户在具有与正则表达式匹配的 Git 引用名称的分支上创建或更新拉取请求`12345`。
+  第二个筛选条件组使用与正则表达式 `^refs/heads/.*` 匹配的 Git 引用名称，指定在名称与正则表达式 `READ_ME` 匹配的文件上创建的推送请求。
+ 第三个筛选条件组指定一个推送请求，其中包含与正则表达式 `\[CodeBuild\]` 匹配的 HEAD 提交消息。
+ 第四个筛选器组指定与正则表达式相匹配的 GitLab CI/CD pipeline job request with a CI/CD管道名称`\[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: GITLAB
      Location: source-location
    Triggers:
      Webhook: true
      ScopeConfiguration:
        Name: group-name
        Scope: GITLAB_GROUP
      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\]
```