Agent Skills
返回列表
🔒

Ratchet 锁定 CI 动作与镜像

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/pin-ci-workflow-actions-and-images-with-ratchet。

技能介绍

可变引用如何悄悄破坏你的 CI 流水线

当你在 GitHub Actions 里写 actions/checkout@v2 或在 Dockerfile 里引用 node:latest 时,看起来一切正常。但 v2 和 latest 都是可变标签:上游随时可以推送新内容,而你的流水线会在下一次运行时拉到完全陌生的代码或镜像。这种静默变更可能导致构建结果不可复现,更严重的是,恶意覆盖标签会让供应链攻击直接进入你的部署路径。很多团队在出事之后才意识到,自己从来没有真正“固定”过依赖版本。

Ratchet 如何把工作流引用钉死

这个技能的核心思路很简单:扫描、识别、重写。它会遍历仓库里的 CI/CD 配置文件(比如 .github/workflows/*.yml),找出所有使用可变引用的地方——包括 GitHub Actions 的 @vN 写法、Docker Hub 的浮动标签,以及其他容器注册表的 latest 或版本范围。然后,它调用 Ratchet CLI 将这些引用替换为不可变的 commit SHA 或镜像 digest。

具体来说,技能会执行以下关键步骤:

  • 审计阶段:解析工作流 YAML,标记所有未固定的 action 引用和容器镜像。
  • 重写阶段:通过 Ratchet 的规则引擎,将 actions/checkout@v2 改为 actions/checkout@<sha>,将 nginx:latest 改为 nginx@sha256:<digest>。
  • 验证阶段:在改动落地前,确保新的引用能够正确解析,不会破坏现有的流水线逻辑。

整个过程对现有工作流的侵入性很小,你不需要手动去查每个依赖的最新 SHA。

适用边界与注意点

这个技能依赖于 Ratchet CLI 本身的能力,因此需要确保环境中已安装并可调用 ratchet。对于私有 GitHub 仓库的解析,可能需要提供 GITHUB_TOKEN 来访问受限的 Actions。此外,Docker 标签的可变性是上游注册表的设计特性,固定操作只能改变当前仓库的引用方式,无法阻止标签被重新覆盖——这意味着你需要定期运行审计,尤其是在上游可能变更标签的场景下。最后,技能专注于 container 和 Docker 相关的引用,如果你的工作流还依赖其他类型的可变资源,可能需要额外的规则扩展。

使用场景

  • 审查 GitHub Actions 工作流中所有未固定版本的 Action 引用,并替换为不可变的 commit SHA
  • 检查 Dockerfile 和 CI 配置里的可变镜像标签,如 latest,替换为带 digest 的固定引用
  • 在代码合并前扫描 CI/CD YAML 文件,识别并固定可变引用,防止供应链风险进入主干
  • 在私有仓库中配合 GITHUB_TOKEN 解析受限 Actions,将其引用固定到具体 commit

适合人员

  • DevOps 工程师,需要在代码合并前固定 CI 工作流中的 Action 与镜像版本,保证构建可复现
  • 安全工程师,负责审计 CI/CD 供应链风险,需要找出并消除工作流里的可变引用
  • 基础设施负责人,希望统一团队的镜像引用方式,防止上游标签变更导致意外部署
  • 后端开发者,日常维护使用 Docker 的 CI 流水线,需要安全地固定依赖版本