GitHub Actions 迁移至 Ubuntu 26.04:先用相同提交比对 Runner 差异
即使源代码未做任何修改,CI 结果也可能发生变化。如果工作流的运行环境依赖于 ubuntu-latest,那么操作系统镜像的更替也应纳入团队需要管理的变更范畴。

GitHub 于 2026 年 9 月 17 日宣布了 Ubuntu 26.04 Runner 的正式支持以及 ubuntu-latest 的迁移计划。本文并非宣称新镜像一定更快,而是提供一套实操建议:通过相同的提交来隔离并确认环境之间的差异。
官方公告中确认的范围
根据公告,Ubuntu 26.04 镜像将在 x64 和 arm64 上获得正式支持,显式标签分别为 ubuntu-26.04 和 ubuntu-26.04-arm。ubuntu-latest 计划于 2026 年 10 月 19 日至 11 月 19 日期间逐步从 Ubuntu 24.04 过渡到 26.04。
新镜像中包含更新或移除的工具,依赖预装软件包的构建可能会受到影响。如果尚未做好准备,GitHub 建议显式指定为 ubuntu-24.04。该时间表并不代表所有代码仓库的实际切换日期。
列出项目所依赖的环境
首先请检查工作流以及可复用工作流中的 runs-on。不要仅仅因为使用了容器就假定宿主机的影响完全消除,建议连同在容器外执行的安装、压缩、上传等步骤一并排查。
在检查清单中,可以把编译器、运行时、包管理器以及系统库分类列出。不要只写工具名称,而是标明它们在哪里安装、哪个步骤调用了它们,这样更容易缩小失败日志中的排查范围。
相同提交、两套环境、独立产物
迁移演练最好在没有部署权限的测试路径中启动,这样目的更为明确。在现有镜像和新镜像上运行相同的提交与锁定文件,并分别保存日志、测试结果和产物名称。这是本文建议的验证方式。
在初期对比时,请记录缓存条件,以便区分旧缓存带来的影响。除了构建是否成功之外,还应记录已安装的工具版本、失败的步骤以及产物的运行结果,从而排查出那些仅凭缓存命中而侥幸通过的情况。
绿色对勾之后的深层验证
如果是 Web 项目,可以验证生成的文件是否能实际提供服务;如果包含原生依赖,则需确认它们能否在目标环境中正常加载。不必强求所有产物的字节完全一致,而应将时间戳等非确定性差异与功能性差异区分判定。
审查人员应当能在一处集中查看新镜像的运行链接、工具版本差异、代表性功能测试结果以及可用于回滚的变更。如果在 Runner 迁移的同时混入应用重构,失败原因和回滚范围就会被不必要地放大。
固定镜像的优势与潜在局限
显式操作系统标签有助于控制大规模变更,但并不代表构建环境完全不可变。请保持显式安装运行所需工具、并在日志中记录实际版本的习惯。
对于较小的代码仓库,无需构建庞大的全新验证体系。可以先从一个代表性构建和最敏感的依赖项开始比对;如果进行了临时固定,只需记录负责解除的人员以及再次复核的日期即可起步。
将公开讨论与团队决策区分开来
runner-images 的公开 Issue 是了解镜像变更和问题反馈的窗口。不过,某条特定评论或其它项目的失败并不意味着在自己的仓库中也会复现,本文也不会对社区共识或故障频率给出量化断言。
当前要做的是找出 latest 标签的使用位置,并用相同的提交在新镜像上进行测试。提前写下通过条件和保留条件,即使在实际迁移期间构建行为发生改变,负责人也能依据相同的证据做出判断。