

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

# GitHub 全域和組織 Webhook
<a name="github-global-organization-webhook"></a>

您可以使用 CodeBuild GitHub 全域或組織 Webhook，從 GitHub 組織或企業內的任何儲存庫開始建置 Webhook 事件。全域和組織 Webhook 可與任何現有的 GitHub Webhook 事件類型搭配使用，而且可以在建立 CodeBuild Webhook 時新增範圍組態來設定。您也可以使用全域和組織 Webhook 在 [ CodeBuild 中設定自我託管的 GitHub 動作執行器](action-runner.md)，以便在單一專案中接收來自多個儲存庫`WORKFLOW_JOB_QUEUED`的事件。

**Topics**
+ [設定全域或組織 GitHub Webhook](github-global-organization-webhook-setup.md)
+ [篩選 GitHub 全域或組織 Webhook 事件 （主控台）](github-global-organization-webhook-events-console.md)
+ [篩選 GitHub 組織 Webhook 事件 (CloudFormation)](github-organization-webhook-events-cfn.md)

# 設定全域或組織 GitHub Webhook
<a name="github-global-organization-webhook-setup"></a>

設定全域或組織 GitHub Webhook 的高階步驟如下所示。如需全域和組織 GitHub Webhook 的詳細資訊，請參閱 [GitHub 全域和組織 Webhook](github-global-organization-webhook.md)。

1. 將專案的來源位置設定為 `CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`。

1. 在 Webhook 的範圍組態中，將範圍設定為 `GITHUB_ORGANIZATION`或 `GITHUB_GLOBAL`，取決於該範圍是組織還是[全域 Webhook](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/exploring-user-activity-in-your-enterprise/managing-global-webhooks)。如需詳細資訊，請參閱 [ Webhook 的類型](https://docs.github.com/en/webhooks/types-of-webhooks)。

1. 指定名稱做為 Webhook 範圍組態的一部分。對於組織 Webhook，這是組織名稱，而對於全域 Webhook，這是企業名稱。
**注意**  
如果專案的來源類型為 `GITHUB_ENTERPRISE`，您也需要指定網域做為 Webhook 範圍組態的一部分。

1. （選用） 如果您只想要接收組織或企業內特定儲存庫的 Webhook 事件，您可以在建立 Webhook 時指定 `REPOSITORY_NAME`做為篩選條件。

1. 如果您要建立組織 Webhook，請確保 CodeBuild 具有在 GitHub 中建立組織層級 Webhook 的許可。您可以建立具有組織 Webhook 許可的 GitHub 個人存取字符，或使用 CodeBuild OAuth。如需詳細資訊，請參閱[GitHub 和 GitHub Enterprise Server 存取權杖](access-tokens-github.md)。

   請注意，組織 Webhook 可與任何現有的 GitHub Webhook 事件類型搭配使用。

1. 如果您要建立全域 Webhook，則需要手動建立 Webhook。如需如何在 GitHub 中手動建立 Webhook 的詳細資訊，請參閱 [GitHub 手動 Webhook](github-manual-webhook.md)。

   請注意，全域 Webhook 僅支援 `WORKFLOW_JOB_QUEUED`事件類型。如需詳細資訊，請參閱[教學課程：設定 CodeBuild 託管的 GitHub 動作執行器](action-runner.md)。

# 篩選 GitHub 全域或組織 Webhook 事件 （主控台）
<a name="github-global-organization-webhook-events-console"></a>

透過主控台建立 GitHub 專案時，請選取下列選項，以在專案內建立 GitHub 全域或組織 Webhook。如需全域和組織 GitHub Webhook 的詳細資訊，請參閱 [GitHub 全域和組織 Webhook](github-global-organization-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 (來源)** 中：
     +  針對**來源提供者**，選擇 **GitHub** 或 **GitHub Enterprise**。
     +  針對**儲存庫**，選擇 **GitHub 範圍 Webhook**。

        GitHub 儲存庫會自動設定為 `CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`，這是全域和組織 Webhook 所需的來源位置。
**注意**  
如果您使用的是組織 Webhook，請確定 CodeBuild 具有在 GitHub 中建立組織層級 Webhook 的許可。如果您使用的是[現有的 OAuth 連線](oauth-app-github.md)，您可能需要重新產生連線，才能授予 CodeBuild 此許可。或者，您可以使用 [CodeBuild 手動 Webhook 功能手動建立 Webhook](github-manual-webhook.md)。請注意，如果您有現有的 GitHub OAuth 權杖，並想要新增其他組織許可，您可以[撤銷 OAuth 權杖的許可](https://docs.github.com/en/apps/oauth-apps/using-oauth-apps/reviewing-your-authorized-oauth-apps)，並透過 CodeBuild 主控台重新連接權杖。  
![\[GitHub 範圍 Webhook 的組態。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/github-organization-webhook-source.png)
   +  在**主要來源 Webhook 事件**中：
     +  對於**範圍類型**，如果您要建立**組織** Webhook，請選擇組織層級；如果您要建立全域 Webhook，請選擇**企業層級**。
     +  對於**名稱**，輸入企業或組織名稱，取決於 Webhook 是全域還是組織 Webhook。

       如果專案的來源類型為 `GITHUB_ENTERPRISE`，您也需要指定網域做為 Webhook 組織組態的一部分。例如，如果您組織的 URL 為 **https://domain.com/orgs/org-name**，則網域為 **https://domain.com**。
**注意**  
 建立 Webhook 之後，就無法變更此名稱。若要變更名稱，您可以刪除並重新建立 Webhook。如果您想要完全移除 Webhook，也可以將專案來源位置更新為 GitHub 儲存庫。  
![\[全域或組織 Webhook 的組態。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/github-organization-webhook-primary-events.png)
     +  （選用） 在 **Webhook 事件篩選條件群組**中，您可以指定[要觸發新組建的事件](github-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`，以設定自我託管的 GitHub 動作執行器。如需詳細資訊，請參閱[教學課程：設定 CodeBuild 託管的 GitHub 動作執行器](action-runner.md)。

1. 繼續執行預設值，然後選擇**建立建置專案**。

# 篩選 GitHub 組織 Webhook 事件 (CloudFormation)
<a name="github-organization-webhook-events-cfn"></a>

 若要使用 CloudFormation 範本篩選組織 Webhook AWS CodeBuild 事件，請使用專案的 `ScopeConfiguration` 屬性。如需全域和組織 GitHub Webhook 的詳細資訊，請參閱 [GitHub 全域和組織 Webhook](github-global-organization-webhook.md)。

**注意**  
不支援全域 Webhook 和 GitHub Enterprise Webhook CloudFormation。

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