GitHub Actions中actions/checkout@v2与v3的差异及v2适用场景问询
actions/checkout@v2 与 v3 的核心差异及v2适用场景
一、两者的主要差异
- Node.js 运行环境:v2 基于 Node.js 12 构建,但 GitHub Actions 已不再支持 Node.js 12(2023年10月起停止维护);v3 升级为 Node.js 16,兼容当前所有官方 runner 环境,避免因 runtime 过时导致的报错。
- 操作系统兼容性:v3 移除了对旧版操作系统的支持,比如 Ubuntu 16.04(Xenial)、Windows Server 2016 等;v2 仍可在这些旧环境中正常运行。
- 安全与合规性:v3 的发布包采用了更严格的代码签名机制,且遵循 GitHub 最新的安全规范;v2 无此签名,GitHub 已标记 v2 为弃用状态,存在潜在安全风险。
- 子模块处理优化:v3 修复了 v2 中部分子模块拉取的 bug(比如递归拉取时的权限问题),同时新增了更清晰的参数配置逻辑(如
submodules参数的默认行为更明确)。 - 权限默认值调整:v3 对
GITHUB_TOKEN的默认权限做了更细粒度的限制,符合最小权限原则;v2 默认授予更宽泛的权限,可能存在过度授权问题。
二、仍需使用 v2 的场景
- 依赖旧版 Node.js 环境:如果你的 workflow 中还有其他必须基于 Node.js 12 运行的 action,或者使用的自定义 runner 无法升级 Node.js 版本,只能继续用 v2。
- 需要支持旧操作系统:若 CI/CD 流程仍依赖 Ubuntu 16.04、Windows Server 2016 等被 v3 放弃支持的系统,v2 是唯一可行选择。
- 依赖 v2 特定行为:如果 workflow 依赖 v2 中某些未在 v3 保留的默认行为(比如旧版子模块拉取逻辑、特定参数默认值),且暂时无法调整代码适配 v3,可继续使用 v2。
- 临时兼容性验证:在升级到 v3 的过程中,可保留 v2 作为对照,验证新流程是否与旧行为一致,确保平稳迁移。
内容的提问来源于stack exchange,提问作者J'e
相关产品推荐
相关产品推荐

