

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

# 排查 webhook 的问题
<a name="action-runner-troubleshoot-webhook"></a>

**问题：**您在中设置的 webhook [教程：配置 CodeBuild托管的 GitHub 操作运行器](action-runner.md) 无法正常工作或您的工作流程任务暂停。 GitHub

**可能的原因：**
+ 您的 webhook **工作流程作业**事件可能无法触发构建。检查**响应**日志以查看响应或错误消息。
+ 由于标签配置，您的作业分配给了不正确的运行程序代理。当单个工作流程运行中一个作业的标签少于另一个作业时，就会出现此问题。例如，如果您在同一个工作流程运行中具有两个带有以下标签的作业：
  + **作业 1**：`codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`
  + **作业 2**：`codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}`、`instance-size:medium`

  路由自托管的 Ac GitHub tions 作业时， GitHub 会将该任务路由到具有所有作业指定标签的任何运行器。此行为意味着为**作业 1** 或**作业 2** 创建的运行程序可以承担**作业 1**，但是由于**作业 2** 有附加标签，因此只能由为**作业 2** 创建的运行程序承担该作业。如果为**作业 2** 创建的运行程序承担了**作业 1**，则**作业 2** 将卡住，因为**作业 1** 运行程序没有 `instance-size:medium` 标签。

**推荐的解决方案：**

在同一个工作流程运行中创建多个作业时，请为每个作业使用相同数量的标签覆盖，或者为每个作业分配一个自定义标签，例如 `job1` 或 `job2`。

如果错误仍然存在，请按照以下说明调试问题。

1. 打开 GitHub 控制台，查看存储库的 webhook 设置。`https://github.com/user-name/repository-name/settings/hooks`在此页面上，您将看到为您的存储库创建的 webhook。

1. 选择**编辑**并确认已启用该 webhook 来传递**工作流作业**事件。  
![\[工作流作业事件已在您的 webhook 中启用。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/github-actions-workflow-jobs.png)

1.  导航至**最近传输**选项卡，找到相应的 `workflow_job.queued` 事件，然后展开该事件。

1.  查看**负载**中的**标签**字段，并确保该字段符合预期。

1.  最后，查看 “**响应**” 选项卡，因为其中包含返回的响应或错误消息 CodeBuild。  
![\[返回的响应或错误消息 CodeBuild。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/github-actions-workflow-jobs-response.png)

1.  或者，你可以使用 GitHub's APIs 调试 webhook 故障。您可以使用[列出存储库 webhook 的传输](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#list-deliveries-for-a-repository-webhook) API 来查看 webhook 的近期传输：

   ```
   gh api \
     -H "Accept: application/vnd.github+json" \
     -H "X-GitHub-Api-Version: 2022-11-28" \
     /repos/owner/repo/hooks/hook-id/deliveries
   ```

    找到要调试的 webhook 交付并记下交付 ID 后，您可以使用[获取存储库 webhook 的交付](https://docs.github.com/en/rest/repos/webhooks?apiVersion=2022-11-28#get-a-delivery-for-a-repository-webhook) API。 CodeBuild对 webhook 交付有效负载的响应可以在以下`response`部分中找到：

   ```
   gh api \
     -H "Accept: application/vnd.github+json" \
     -H "X-GitHub-Api-Version: 2022-11-28" \
     /repos/owner/repo/hooks/hook-id/deliveries/delivery-id
   ```

**问题：**启用[部署保护](https://docs.github.com/en/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments)规则的 GitHub 操作会在部署获得批准 CodeBuild 之前在内部生成触发器。

**可能的原因：** CodeBuild 获取与 Actions 作业关联的 GitHub 部署和环境（如果存在），以验证是否获得批准。如果 CodeBuild 无法获取部署或环境，则可能会过早触发 CodeBuild 构建。

**推荐的解决方案：**验证与您的 CodeBuild 项目关联的凭证是否具有内部部署和操作的读取权限 GitHub。