排查 webhook 的问题 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

排查 webhook 的问题

问题:您在 教程:配置 CodeBuild 托管的 GitHub Actions 运行器 中设置的 webhook 无法正常工作,或者您的工作流作业在 GitHub 上挂起。

可能的原因:

  • 您的 webhook 工作流程作业事件可能无法触发构建。检查响应日志以查看响应或错误消息。

  • 由于标签配置,您的作业分配给了不正确的运行程序代理。当单个工作流程运行中一个作业的标签少于另一个作业时,就会出现此问题。例如,如果您在同一个工作流程运行中具有两个带有以下标签的作业:

    • 作业 1codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}

    • 作业 2codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}instance-size:medium

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

建议的解决方案:

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

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

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

  2. 选择编辑并确认已启用该 webhook 来传递工作流作业事件。

    工作流作业事件已在您的 webhook 中启用。
  3. 导航至最近传输选项卡,找到相应的 workflow_job.queued 事件,然后展开该事件。

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

  5. 最后,查看响应选项卡,这里包含从 CodeBuild 返回的响应或错误消息。

    从 CodeBuild 返回的响应或错误消息。
  6. 或者,您可以使用 GitHub 的 API 调试 webhook 故障。您可以使用列出存储库 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 的传输 API。可以在 response 部分中找到 CodeBuild 对 webhook 传输负载的响应:

    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

问题:启用部署保护规则的 GitHub Actions 会在部署获得批准之前在 CodeBuild 中触发构建。

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

建议的解决方案:验证与 CodeBuild 项目关联的凭证是否对 GitHub 中的部署和操作具有读取权限。