
GitHub 发布 gh-actions-lock 扩展,可生成并校验 Actions 依赖锁文件
来源标题:An extension that generates and verifies the GH Actions dependency lockfile
GitHub 推出 gh-actions-lock CLI 扩展,可将工作流中所有直接和间接使用的 action 固定到经验证的 commit,并记录在 .github/workflows/actions.lock 中。该扩展需已认证的 gh,支持 github.com 和 GitHub Enterprise Cloud(含数据驻留的 *.ghe.com),不支持 GitHub Enterprise Server。添加工作流或修改 uses: 后需重新运行 gh actions-lock。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
一个 GitHub CLI 扩展,把工作流用到的每个直接和传递 action 都固定到一个经过验证的 commit 上,并记录在 .github/workflows/actions.lock 中。 需要已通过认证的 gh。支持 github.com 和带数据驻留的 GitHub Enterprise Cloud(*.ghe.com);不支持 GitHub Enterprise Server。 gh extension install github/gh-actions-lock 要让你的 AI 编码 agent 了解这个 CLI: gh skill install github/gh-actions-lock 快速开始 在仓库检出目录中运行: gh actions-lock # 初次接入或修复:固定所有可解析的 action 并写入 actions.lock git add .github/workflows/ # 提交到源码库 添加工作流或修改任何 uses: 之后,重新运行 gh actions-lock。 注意不要提交损坏的 lockfile。把 .github/workflows/verify-lockfile.yml 复制到你的仓库,按需修改,然后运行一次 gh actions-lock,让该工作流也被锁定。 运行 gh auth login --hostname TENANT.ghe.com,然后在租户仓库的检出目录中运行 gh actions-lock。主机名来自仓库的 remote;不需要 --hostname,也不需要导出 token。 不在租户上的 action(例如 actions/checkout)会从公共 github.com 仓库读取。这些查询绝不使用租户 token、GH_TOKEN 或 GITHUB_TOKEN。它们按以下顺序使用: 在 GHE.com 上的 GitHub Actions 中,作业的 GITHUB_TOKEN 由你的租户签发,因此 github.com 不接受它。请在 github.com 上创建一个细粒度 personal access token,仅授予公共仓库访问权限、不授予任何其他权限,将其保存为租户上的 secret,并按如下方式传入:
- run: gh actions-lock --verify env: GH_TOKEN: ${{ github.token }} GH_ACTIONS_LOCK_GITHUB_COM_TOKEN: ${{ secrets.ACTIONS_LOCK_GITHUB_COM_TOKEN }} 模式 命令 写入 网络 用途 gh actions-lock 是 是 初次接入和修复 lockfile gh actions-lock --relock 是 是 把已移动的 ref(main、v4)推进到当前上游 commit gh actions-lock --verify 否 是 CI:与修复运行相同的检查 gh actions-lock --verify-local 否 否 Pre-commit:每个 uses: 都有 lockfile 条目(仅覆盖检查,不验证来源) gh actions-lock --no-fix 否 是 只读报告 其他标志: 从另一个仓库在 jobs.<id>.uses 调用的可复用工作流不会被锁定(#179)。 本地 ./… action 永远不会被跟踪或锁定,因此如果它使用了远程 action,就会成为阻塞性错误,直到你传入 --migrate-local-actions(把同仓库的 ./… 重写为 $/…)或 --ignore-local-actions。 容器镜像不会被锁定,任何没有 @sha256: 摘要的镜像(包括由 ${{ }} 表达式选择的镜像)都会产生警告(#236)。 --verify-local 是离线覆盖检查,不验证来源;--verify 在合并前验证来源,runner 在作业启动时还会再检查一次。 如果 lockfile 的变更把浮动 ref(v4、main)回退到其历史中较旧的 commit,这种情况不会被检测到,因此请审查 lockfile 的 diff,或固定到精确的 tag。 了解更多 Workflow dependency lockfiles Lock workflow dependencies Enforce workflow lockfiles 故障排查 贡献 参见 CONTRIBUTING.md
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。