排查 webhook 的问题
问题:您在 教程:配置 CodeBuild 托管的 GitHub Actions 运行器 中设置的 webhook 无法正常工作,或者您的工作流作业在 GitHub 上挂起。
可能的原因:
-
您的 webhook 工作流程作业事件可能无法触发构建。检查响应日志以查看响应或错误消息。
-
由于标签配置,您的作业分配给了不正确的运行程序代理。当单个工作流程运行中一个作业的标签少于另一个作业时,就会出现此问题。例如,如果您在同一个工作流程运行中具有两个带有以下标签的作业:
-
作业 1:
codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} -
作业 2:
codebuild-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标签。 -
建议的解决方案:
在同一个工作流程运行中创建多个作业时,请为每个作业使用相同数量的标签覆盖,或者为每个作业分配一个自定义标签,例如 job1 或 job2。
如果错误仍然存在,请按照以下说明调试问题。
-
在
https://github.com/打开 GitHub 控制台,查看存储库的 webhook 设置。在此页面上,您将看到为您的存储库创建的 webhook。user-name/repository-name/settings/hooks -
选择编辑并确认已启用该 webhook 来传递工作流作业事件。
-
导航至最近传输选项卡,找到相应的
workflow_job.queued事件,然后展开该事件。 -
查看负载中的标签字段,并确保该字段符合预期。
-
最后,查看响应选项卡,这里包含从 CodeBuild 返回的响应或错误消息。
-
或者,您可以使用 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
问题:启用部署保护
可能的原因:CodeBuild 获取与 GitHub Actions 作业关联的部署和环境(如果存在),以验证是否获得批准。如果 CodeBuild 无法获取部署或环境,则可能会过早触发 CodeBuild 构建。
建议的解决方案:验证与 CodeBuild 项目关联的凭证是否对 GitHub 中的部署和操作具有读取权限。