Repolode
suzuki-shunsuke

suzuki-shunsuke/pinact

一个命令行工具,可将 GitHub Actions 和可复用工作流固定到完整提交 SHA,并支持更新和校验版本注释。

Star
1,252
Fork
43
未关闭 Issue
33
最近提交
前天

这是什么?

pinact 会编辑 GitHub workflow 和 composite action 文件,把 action 与可复用工作流的引用替换为不可变的完整提交 SHA,并将原版本号保留在行尾注释中。由于 tag(如 v3)可能被维护者移动,固定到 SHA 可以降低供应链风险。

除了固定版本,pinact 还能将已固定的 action 更新到新版本,在不修改文件的情况下检查是否已固定,并校验版本注释与 SHA 是否一致。它支持离线检查模式、GitHub Enterprise Server,也可从系统钥匙串或 ghtkn 读取 GitHub token。

CI 流水线可以使用检查模式,在存在未固定的 action 时使构建失败,也可输出 SARIF 格式,配合 reviewdog 等工具做代码审查。

核心功能

  • 01将 GitHub Actions 与可复用工作流固定到提交 SHA,并保留版本号注释。
  • 02无需修改文件即可检查固定状态,支持不调用 GitHub API 的离线检查。
  • 03更新已固定的 action,并可设置最短发布时间。
  • 04校验版本注释是否与固定的提交一致。
  • 05支持按名称包含或排除特定 action,也可只固定变更的行。
  • 06可输出 SARIF 格式,并支持 GitHub Enterprise Server。

适用场景

  • 加固 CI 工作流,避免第三方 action 在无感知的情况下发生变化。
  • 在 CI 中使用检查模式,对未固定的引用直接报错。
  • 不使用 Renovate 的团队手动更新已固定的 action。
  • 在大型仓库中通过只固定变更行的方式逐步推行固定版本。

快速上手

  1. 1

    安装 pinact(参见 INSTALL.md)

  2. 2

    固定仓库中的 Actions 版本

    pinact run
  3. 3

    在 CI 中检查固定情况而不修改文件

    pinact run --check
  4. 4

    设置 GitHub 令牌,避免 API 调用受速率限制

    export GITHUB_TOKEN=<your token>

使用前须知

  • 未提供 GitHub 访问令牌时,API 调用会受到速率限制。

收录于专题

标签

常见问题

pinact 是什么?
一个命令行工具,可将 GitHub Actions 和可复用工作流固定到完整提交 SHA,并支持更新和校验版本注释。 pinact 会编辑 GitHub workflow 和 composite action 文件,把 action 与可复用工作流的引用替换为不可变的完整提交 SHA,并将原版本号保留在行尾注释中。由于 tag(如 v3)可能被维护者移动,固定到 SHA 可以降低供应链风险。
pinact 可以免费使用吗?用的什么许可证?
pinact 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
pinact 还在维护吗?
活跃维护中。pinact 最近一次提交是在 2026年11月6日。
pinact 适合用来做什么?
加固 CI 工作流,避免第三方 action 在无感知的情况下发生变化。 在 CI 中使用检查模式,对未固定的引用直接报错。 不使用 Renovate 的团队手动更新已固定的 action。 在大型仓库中通过只固定变更行的方式逐步推行固定版本。
pinact 怎么安装和运行?
安装 pinact(参见 INSTALL.md) 固定仓库中的 Actions 版本: pinact run 在 CI 中检查固定情况而不修改文件: pinact run --check 设置 GitHub 令牌,避免 API 调用受速率限制: export GITHUB_TOKEN=<your token>
在哪里获取 pinact?
源代码和安装说明在 GitHub 上:https://github.com/suzuki-shunsuke/pinact

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目