

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

您可以使用 CodeBuild GitLab 群組 Webhook，從 GitLab 群組中的任何儲存庫開始建置 Webhook 事件。群組 Webhook 可與任何現有的 GitLab Webhook 事件類型搭配使用，而且可以在建立 CodeBuild Webhook 時新增範圍組態來設定。您也可以使用群組 Webhook 在 [ CodeBuild 中設定自我託管 GitLab 執行器](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 具有在 GitLab 中建立群組層級 Webhook 的許可。若要這樣做，您可以透過 CodeConnections 使用 CodeBuild OAuth。 CodeConnections 如需詳細資訊，請參閱[CodeBuild 中的 GitLab 存取](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：//[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) 開啟 AWS CodeBuild 主控台。

1. 建立建置專案。如需詳細資訊，請參閱 [建立組建專案 (主控台)](create-project.md#create-project-console) 及 [執行建置 (主控台)](run-build-console.md)。
   +  在 **Source (來源)** 中：
     +  針對**來源提供者**，選擇 **GitLab** 或 **GitLab 自我管理**。
     +  針對**儲存庫**，選擇 **GitLab 範圍 Webhook**。

        GitLab 儲存庫會自動設定為 `CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`，這是群組 Webhook 所需的來源位置。
**注意**  
使用群組 Webhook 時，請確定 CodeBuild 具有在 GitLab 中建立群組層級 Webhook 的許可。如果您使用的是[現有的 OAuth 連線](access-tokens-gitlab-overview.md#connections-gitlab)，您可能需要重新產生連線，才能授予 CodeBuild 此許可。  
![\[GitLab 範圍 Webhook 的組態。\]](http://docs.aws.amazon.com/zh_tw/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_tw/codebuild/latest/userguide/images/gitlab-group-webhook-primary-events.png)
     +  （選用） 在 **Webhook 事件篩選條件群組**中，您可以指定[要觸發新組建的事件](gitlab-webhook.md)。您也可以指定 `REPOSITORY_NAME`做為篩選條件，以僅觸發來自特定儲存庫的 Webhook 事件建置。  
![\[僅觸發來自特定儲存庫之 Webhook 事件建置的篩選條件。\]](http://docs.aws.amazon.com/zh_tw/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)。

 範本的下列 YAML 格式部分 CloudFormation 會建立四個篩選群組。當一個或全部評估為 true 時，它們會一起觸發組建：
+  第一個篩選條件群組指定在分支上建立或更新提取請求，其 Git 參考名稱符合沒有帳戶 ID 的 `^refs/heads/main$` GitLab 使用者的規則表達式`12345`。
+  第二個篩選群組指定在分支中的檔案上建立的推送請求，並且這些檔案的名稱符合規則表達式 `READ_ME`，而分支的 Git 參考名稱符合規則表達式 `^refs/heads/.*`。
+ 第三個篩選群組會指定其 head 提交訊息符合規則運算式 `\[CodeBuild\]` 的推送請求。
+ 第四個篩選條件群組指定 GitLab CI/CD 管道任務請求，其 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\]
```