

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

# GitHub 全球和组织 webhook
<a name="github-global-organization-webhook"></a>

您可以使用 CodeBuild GitHub 全局或组织 webhook 在 GitHub 组织或企业内任何存储库的 webhook 事件上启动构建。全局和组织 webhook 可与任何现有的 GitHub webhook 事件类型配合使用，并且可以通过在创建 webhook 时添加范围配置来进行配置。 CodeBuild 您还可以使用全局和组织 webhook 在其中[设置自托管的 Acti GitHub on 运行器，以便 CodeBuild在单个项目中](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 有权在其中创建组织级 Webhook。 GitHub您可以创建具有组织 webhook 权限的 GitHub个人访问令牌，也可以使用 CodeBuild OAuth。有关更多信息，请参阅 [GitHub 和 GitHub 企业服务器访问令牌](access-tokens-github.md)。

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

1. 如果您要创建全局 webhook，则需要手动创建 webhook。有关如何在其中手动创建 webhook 的更多信息 GitHub，请参阅[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://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)。
   +  在**源**中：
     +  对于**源提供商**，请选择**GitHub**或**GitHub企业**。
     +  对于**存储库**，选择**GitHub作用域化的 webh** ook。

        GitHub 存储库将自动设置为`CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION`，这是全局和组织 webhook 所需的源位置。
**注意**  
如果您使用的是组织 webhook，请确保 CodeBuild 它有权在其中创建组织级 Webhook。 GitHub如果您使用的是[现有 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_cn/codebuild/latest/userguide/images/github-organization-webhook-source.png)
   +  在**主要源 Webhook 事件**中：
     +  在**范围类型**中，如果您要创建组织 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_cn/codebuild/latest/userguide/images/github-organization-webhook-primary-events.png)
     +  （可选）在 **webhook 事件筛选条件组**中，您可以指定[要触发新构建的事件](github-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`以设置自托管的 Actions 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 企业 Webhook。 CloudFormation

 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
      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\]
```