初始故障排除建议
可通过多种方式排查工作流运行失败的问题。
注意
如果使用的是 GitHub Copilot 免费版 订阅,则此值将计入每月聊天消息限制。
使用 GitHub Copilot
若要打开与 GitHub Copilot 进行的关于失败工作流运行的聊天,你可以:
- 在合并框中失败的检查旁边,单击“”,然后单击“ Explain error”。********
- 在合并框中,单击失败的检查。 在工作流运行摘要页顶部,单击“ Explain error”。****
这将打开与 GitHub Copilot 的聊天窗口,其中将提供解决问题的说明。
使用工作流运行日志
每个工作流程运行都会生成活动日志,您可以查看、搜索和下载这些日志。 有关详细信息,请参阅“使用工作流运行日志”。
启用调试日志记录
如果工作流程日志没有提供足够的详细信息来诊断工作流程、作业或步骤未按预期工作的原因,您可以启用额外的调试日志。 有关详细信息,请参阅“启用调试日志记录”。
如果工作流使用特定工具或操作,则启用其调试或详细日志记录选项有助于生成更详细的输出,以便进行故障排除。
例如,可以将 npm install --verbose
用于 npm,或将 GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...
用于 git。
查看计费错误
操作使用情况包括工作流项目的运行器分钟数和存储。 有关详细信息,请参阅“GitHub Actions 计费”。
设置预算
配置 Actions 预算可能有助于立即恢复因计费或存储错误而中断的工作流。 这将使额外的运行时间和存储使用量可在设定的预算限额内继续计费。 若要了解详细信息,请参阅“设置预算以控制按流量计费的产品的支出”。
通过指标查看 GitHub Actions 活动
若要使用指标分析工作流的效率和可靠性,请参阅“查看 GitHub Actions 指标”。
排查工作流触发器问题
可查看工作流的 on:
字段,以了解触发工作流的预期内容。 有关详细信息,请参阅“触发工作流程”。
有关可用事件的完整列表,请参阅“触发工作流的事件”。
触发事件条件
某些触发事件仅从默认分支(即 issues
和 schedule
)运行。 位于默认分支之外的工作流文件版本不会响应这些事件的触发。
如果拉取请求存在合并冲突,工作流将不会在 pull_request
活动上运行。
如果提交信息中包含跳过注释,则触发 push
或 pull_request
活动的工作流将不会运行。 有关详细信息,请参阅“跳过工作流程运行”。
计划内工作流在意外时间运行
计划内事件在 GitHub Actions 工作流运行期间负载过高时可能会被延迟。
高负载时间包括每小时的开始时间。 如果负载足够高,可能会删除一些排队作业。 为了降低延迟的可能性,将您的工作流程安排在不同时间运行。 有关详细信息,请参阅“触发工作流的事件”。
筛选和差异限制
特定事件支持你自定义按分支、标签和/或路径进行筛选。 如果应用筛选条件筛选掉工作流,则不会创建该工作流运行。
可在筛选器中使用特殊字符。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。
对于路径筛选,评估差异仅限于前 300 个文件。 如果更改的文件与筛选器返回的前 300 个文件不匹配,则工作流将不会运行。 有关详细信息,请参阅“GitHub Actions 的工作流语法”。
排查工作流执行问题
工作流执行涉及在触发工作流并创建工作流运行后出现的任何问题。
取消工作流
如果通过 UI 或 API 的常规取消操作未按预期执行,可能是正在运行的工作流作业配置了某个条件语句,导致其无法被取消。
在这些情况下,可以利用 API 强制取消运行。 有关详细信息,请参阅“工作流运行的 REST API 终结点”。
常见原因可能是使用了 always()
状态检查函数,该函数即使在取消操作时也会返回 true
。 另一种方法是使用 cancelled()
函数的反函数 ${{ !cancelled() }}
。
有关详细信息,请参阅 使用条件控制作业执行 和 取消工作流程运行。
排查运行器错误
定义运行器标签
GitHub-托管运行器利用通过 actions/runner-images
仓库维护的预设标签。
建议对大型自托管运行器使用唯一的标签名称。 如果某个标签与现有的预设标签匹配,可能会出现运行器分配问题,导致无法保证作业将在哪个匹配的运行器上运行。
自托管运行器
如果您使用自托管运行器,则可以查看其活动并诊断常见问题。
有关详细信息,请参阅“对自托管运行程序进行监视和故障排除”。
网络故障排除建议
我们对涉及以下情况的网络问题支持范围有限:
- 你的网络
- 外部网络
- 第三方系统
- 一般 Internet 连接
要查看 GitHub 的实时平台状态,请查看 GitHub 状态。
对于其他与网络相关的问题,请查看组织的网络设置,并验证你正在访问的任何第三方服务的状态。 如果问题仍然存在,请考虑联系网络管理员以获得进一步的帮助。
如果不确定此问题,请联系 GitHub 支持。 有关如何联系支持人员的详细信息,请参阅“联系 GitHub 支持”。
DNS
域名系统 (DNS) 配置、解析或解析程序问题都可能导致出现问题。 建议你查看可用日志、供应商文档,或咨询管理员以获取进一步帮助。
防火墙
活动可能会被防火墙阻止。 如果发生此情况,建议你查看可用日志、供应商文档,或咨询管理员以获取进一步帮助。
代理
使用代理进行通信时,活动可能会失败。 最佳做法是查看可用日志、供应商文档,或咨询管理员以获取进一步帮助。
有关将运行器应用程序配置为使用代理的信息,请参阅“将代理服务器与自托管运行程序结合使用”。
子网
使用子网时,或当子网与现有网络(例如虚拟云服务商网络、Docker 网络等)存在重叠时,可能会遇到问题。 在这些情况下,建议查看正在使用的网络拓扑和子网。
Certificates
自签名或自定义证书链以及证书存储相关的问题都可能导致出现问题。 可以检查正在使用的证书是否尚未过期且当前处于受信任状态。 可以使用 curl
或类似的工具检查证书。 还可查看可用日志、供应商文档,或咨询管理员以获取进一步帮助。
IP 列表
IP 允许或拒绝列表可能会干扰预期的通信。 如果出现问题,应查看可用日志、供应商文档,或咨询管理员以获取进一步帮助。
如果 GitHub 帐户配置了 IP 允许列表,当运行器使用的 IP 地址未包含在该允许列表中时,工作流将失败。 要解决此问题,请验证运行器的 IP 地址是否已添加到你的组织或企业的允许列表中。 有关详细信息,请参阅“管理组织允许的 IP 地址”和/或“使用 IP 允许列表限制到企业的网络流量”。
如需了解 GitHub 的 IP 地址信息(例如 GitHub 托管运行器所使用的 IP 地址),请参阅“关于 GitHub 的 IP 地址”。
静态 IP 地址可用于 GitHub 托管的大型运行器。 有关详细信息,请参阅“管理较大的运行器”。
操作系统和软件应用程序
除防火墙或代理外,对 GitHub 托管运行器执行的自定义操作(例如安装额外的软件包),也可能导致通信中断。 有关可用自定义选项的信息,请参阅“自定义 GitHub 托管的运行器”。
-
对于自托管运行器,如需了解更多关于必要终结点的信息,请参阅“自托管运行程序参考”。
-
有关配置 WireGuard 的帮助,请参阅“使用 WireGuard 创建网络覆盖”。
-
有关配置 OpenID Connect (OIDC) 的详细信息,请参阅“将 API 网关与 OIDC 配合使用”。
GitHub 托管运行器的 Azure 专用网络
在配置的 Azure 虚拟网络 (VNET) 设置中使用 GitHub 托管运行器可能会出现问题。
有关故障排除建议,请参阅 GitHub Enterprise Cloud 文档中的“排查组织中 GitHub 托管的运行器的 Azure 专用网络配置问题”或“排查组织中的 GitHub 托管运行器的 Azure 专用网络配置问题”。