actionlint
GitHub Actions 工作流静态检查器,检查结构、表达式及受支持的脚本和 action 参数。
#ops
#resource
#evergreen
#tool
#cli
#github
actionlint
actionlint 是用 Go 编写的 GitHub Actions 工作流静态检查器。它检查 YAML 结构和 Actions 语义,不运行 job,也不证明工作流实际构建或部署成功。
检查范围
- 工作流字段、job 依赖及常见结构错误。
${{ }}表达式的上下文、属性与类型,例如将secrets写成secrest。- 支持的本地 action 元数据,以及内置知识覆盖的常见远端 action 输入。不能保证校验所有第三方 action、所有版本和所有必填参数。
- 可调用 ShellCheck 检查受支持 shell 的
run:脚本,也可集成其他脚本检查器。没有安装对应工具时,相应检查能力受限;这不等于 YAML 检查失效。
静态检查不能确认某个 secret 真的存在、token 拥有什么权限、服务能否访问,或自托管 runner 是否安装了依赖。
安装与使用
例如使用 Scoop 或 Go 工具链安装:
scoop install actionlint
go install github.com/rhysd/actionlint/cmd/actionlint@latest
二选一即可。自动化环境宜固定已验证版本,避免工具升级造成未预期的规则变化。
在 Git 仓库中运行:
actionlint -version
actionlint
actionlint .github/workflows/ci.yml
无文件参数时检查仓库内的工作流;指定文件时路径必须存在。结果无诊断且成功退出,表示通过本次静态检查,不表示 workflow 已执行。需要 ShellCheck 联动时另行安装 shellcheck 并确保可从 PATH 找到。
与 act 配合
act 用于本地执行部分工作流逻辑,actionlint 用于静态检查。两者互补,但都不能完整复现 GitHub 托管环境与仓库权限。
[!info] related notes