编程 GitHub Actions 依赖锁文件公开预览:gh actions-lock 锁住 action 的 commit,tag 移动也照跑

2026-10-15 01:19:18

GitHub Actions 依赖锁文件进入公开预览:用 gh actions-lock 锁定 action 的 commit

GitHub Actions workflow dependency lockfiles 现已在 GitHub Enterprise Cloud 和 GitHub Enterprise Cloud with data residency 进入 public preview。

tag 和 branch 是可移动的。你 review 完一个 workflow 之后,它们仍可能被推到别的 commit 上,于是之后的一次运行执行的就是另一份代码。更糟的情况是:如果某个 action 被入侵,一次 tag 或 branch 的移动就能在你的仓库毫无改动的前提下把恶意代码带进工作流。

锁文件让工作流里继续写原来的引用,但运行时执行的是你锁定的确切 commit。它把 workflow run 和锁定的 commit 绑在一起,用来抵御这类预期外的依赖变更。

需要区分的一点:加锁只保证跑的是你审过的那份 commit,并不判断依赖本身是否安全。锁之前先 review 依赖。

安装 gh actions-lock 扩展

用 GitHub CLI 安装 gh actions-lock 扩展,来创建和维护 workflow lockfile。扩展从公开的 gh-actions-lock 仓库获取。

扩展能做的事

  • Pin your dependencies:生成 .github/workflows/actions.lock,为 actions、它们的传递依赖,以及可复用工作流依赖记录可审查的 commit。
  • Adopt locking gradually:逐个接入 workflow。一旦某个 workflow 接入,它的每个依赖都必须有对应的 lockfile 条目,GitHub Actions 会运行其中记录的 commit。
  • Keep workflow runs consistent:即使 tag 或 branch 移动,GitHub Actions 也要求已接入 workflow 的每个依赖都存在于 lockfile 中,并使用其中记录的 commit。
  • Check for stale lockfiles:在不修改文件的前提下校验 lockfile 是否为最新,可以放进 CI 检查里跑。

Require lockfile 策略

Require lockfile 策略同样处于 public preview。Enterprise、organization、repository 三级的管理员,都可以在各自的范围内要求 workflow 使用 lockfile。

Dependabot 如何同步锁文件

Dependabot 负责把 GitHub Actions 依赖保持在最新版本。当它为一个已经接入锁定的 workflow 中的 action 打开版本更新时,会在同一个 pull request 里重新生成对应的 lockfile 条目,让更新后的 workflow 引用和它锁定的 commit 保持同步,不需要额外配置。细节见 Dependabot updates for actions 文档。

如何开始

从公开的 gh-actions-lock 仓库安装扩展,然后审查并提交生成的 lockfile 和 workflow 变更。安装步骤与更多细节见 GitHub Docs 的 workflow dependency lockfiles 文档。反馈可以发到已有的社区讨论,或在 gh-actions-lock 仓库开 issue。

项目信息

  • gh-actions-lock 仓库:

推荐文章

程序员茄子在线接单