SuperAPI AI 工具集

github-actions-validator

部署与运维

查看项目

更新于 10-14 16:41

技能介绍

用途

GitHub Actions Validator 用于校验和测试 GitHub Actions 工作流、自定义 Action 和公开 Action。它基于 actionlint(静态分析)与 act(本地工作流执行)这两个行业标准工具,覆盖语法检查、静态分析、本地执行测试和 Action 版本核对。

触发场景包括:请求校验某个 GitHub Actions 工作流、检查 .github/workflows/*.yml 文件、调试 actionlint 报错、用 act 在本地测试工作流、核对 GitHub Action 版本或弃用情况。

主要能力

  • 静态分析(actionlint):检查 YAML 语法、schema 合规、表达式语法、runner 标签、action 输入/输出、job 依赖、CRON 语法、glob 模式、shell 脚本、安全漏洞。
  • 本地测试(act):通过 Docker 在本地执行工作流。
  • 完整校验:结合上述两者。

校验对象包括:工作流文件(触发条件、job 配置、runner 标签、环境变量、secrets、条件、矩阵策略),自定义本地 Action(需创建引用该 Action 的测试工作流后校验),公开 Action(先查 references/action_versions.md,未知 Action 查官方文档,核对必需输入与版本,检查弃用警告)。

使用方式

设置技能路径(每个 shell 会话一次):

SKILL_DIR="devops-skills-plugin/skills/github-actions-validator"

初始安装(安装 act 与 actionlint 到 scripts/.tools/):

bash "$SKILL_DIR/scripts/install_tools.sh"

基本校验:

校验单个工作流

bash "$SKILL_DIR/scripts/validate_workflow.sh" .github/workflows/ci.yml

校验所有工作流

bash "$SKILL_DIR/scripts/validate_workflow.sh" .github/workflows/

仅 lint(最快)

bash "$SKILL_DIR/scripts/validate_workflow.sh" --lint-only .github/workflows/ci.yml

仅用 act 测试(需要 Docker)

bash "$SKILL_DIR/scripts/validate_workflow.sh" --test-only .github/workflows/

默认行为:若 act 缺失,完整校验回退为仅 actionlint;若 Docker 不可用,跳过 act 继续 actionlint;--check-versions 在离线/本地模式下使用 references/action_versions.md。所有命令需在包含 .github/workflows/ 的仓库根目录运行。

执行流程

每次校验按顺序执行:设置技能路径并运行校验 → 将每个错误映射到参考文档 → 应用最小引用策略(引用工具输出的确切错误行,只引用参考文件中最小有用片段,建议不超过 8 行)→ 显式处理未映射错误(标记为 UNMAPPED,捕获确切输出、文件与行号,先查 references/common_errors.md 通用章节,仍无法解决则用确切错误字符串搜索官方文档,修复标记为临时性直到重跑通过)→ 核验公开 Action 版本 → 强制修复后重跑 → 给出最终摘要。

适用场景与限制

适用于推送前预提交校验、本地调试工作流失败、验证自定义 Action 与公开 Action 用法、在 CI/CD 中自动校验。限制包括:act 无法在本地支持所有 GitHub Actions 功能;act 需要 Docker 运行;部分 GitHub API 相关 Action 在本地可能失败;私有 Action 无访问权限时无法校验;静态分析无法捕获所有运行时问题;act 只能校验 .github/workflows/ 目录内的工作流,目录外文件(如 examples/)只能用 actionlint 校验。

参考文档

references/act_usage.md(act 用法、命令、选项、限制、排错)、references/actionlint_usage.md(actionlint 校验类别、配置、集成)、references/common_errors.md(常见错误目录与修复)、references/action_versions.md(当前 Action 版本、弃用时间线、SHA 固定)、references/modern_features.md(可复用工作流、SBOM、OIDC、环境、容器)、references/runners.md(GitHub 托管 runner)。