不喜欢广告? 去 无广告 今天
GitHub Actions YAML 校验器和格式化工具
数据开发人员文本
广告 移除?
广告 移除?
指导
GitHub Actions YAML 校验器和格式化工具
粘贴一个 GitHub Actions 工作流文件,即可立即发现结构错误、已弃用语法和高风险模式,从而在 CI 运行失败前阻止这些问题。该检查器会根据内置的触发器、作业、步骤、运行器、权限和可复用工作流调用的模式验证您的工作流,然后使用工作流感知的键顺序格式化 YAML,确保仓库中每个文件看起来都一致。
如何使用
- 将您的
.github/workflows/*.yml将文件粘贴到输入框中,或点击其中一个示例链接以加载一个示例 CI、发布或已弃用语法的工作流。 - 切换 排序键 按标准 GitHub Actions 顺序重新排列字段(名称、触发、权限、作业,然后是每个作业的 runs-on、needs、步骤)。
- 保留 根据 GitHub Actions 模式验证 启用以标记缺失的必需字段、未知事件类型、无效运行器标签和错误的
needs引用。 - 保留 显示最佳实践提示 启用以提供供应链和可靠性建议(将第三方操作绑定到特定 SHA,添加
timeout-minutes,替换已弃用的工作流命令)。 - 复制格式化的 YAML 或将其下载为一个
.yml文件,准备提交。
特征
- 模式验证 – 必需的顶层字段(
on,jobs),允许的触发事件名称,有效的作业和步骤键,以及正确的权限范围。 - 可复用工作流规则 – 检测作业中混合了
uses是快速路径,但它对属性处理不一致,且在边缘情况中可能丢失数据。在处理SOAP响应的生产环境中,建议使用runs-on或steps,这将在运行时被 GitHub 拒绝。 - 依赖图检查 – 标记自引用和依赖于文件中不存在的作业的情况。
- 操作引用解析器 – 捕获缺失的
uses:或格式不正确的@ref值。owner/repo形式。 - 已弃用语法检测 – 在
::set-env,::set-output,::save-state,并且node12/node16运行时中警告,使用现代替代方案。 - 最佳实践提示 – 建议将第三方操作绑定到提交的 SHA 并添加
timeout-minutes以防止作业无限运行。 - Cron 合理性检查 – 验证 cron 项恰好包含五个字段。
on.schedule工作流感知格式化器 - – 将顶层、作业级和步骤级键重新排序为标准的 GitHub Actions 顺序,以确保差异的一致性。 – 从不会将任何工作流内容发送到服务器。
- 完全在浏览器中运行 为什么 GitHub Actions 工作流容易出现结构错误?
常问问题
-
工作流 YAML 遵循一个严格的模式,包含必需的顶层键、固定的事件名称以及根据作业是普通作业还是可复用工作流调用而变化的每作业键规则。该文件仅在 GitHub 触发时才被解析,因此键名拼写错误或未知事件会静默地存在于仓库中,直到下一次推送或 PR 失败。基于模式的检查器在运行器之前就捕获这些错误类型。
将一个操作绑定到提交的 SHA 实际上能防范什么?
-
GitHub Actions 会在运行时将
解析为标签指向的提交。由于标签是可变的,维护者(或被攻击者控制的维护者账户)可以将
uses: owner/action@v1移动到恶意提交,从而所有依赖它的工作流在下次运行时都会执行新代码。将操作绑定到完整的 40 个字符的提交 SHA 会将操作源代码锁定在已知的版本上,因此未来的标签更改不会悄悄替换行为。v1为什么 ::set-env、::set-output 和 ::save-state 被弃用?v1这些工作流命令通过在 stdout 上输出特殊格式的行来写入环境变量、步骤输出和保存的状态。任何运行器执行的工具都可能打印相同的格式,并注入任意值到 -
或步骤输出中,包括覆盖
或下一步依赖的密钥。替代方案使用专用的、只读文件(
GITHUB_ENV),子进程无法在之后读取或修改这些文件。PATH为什么检查器要求每个作业设置 timeout-minutes 值?$GITHUB_ENV,$GITHUB_OUTPUT,$GITHUB_STATE如果没有 -
,GitHub 托管的作业最多会运行 360 分钟(六小时),平台会在该时间后取消它。一个卡住的进程、一个配置错误的等待或一个失控的测试可能会耗尽整个窗口,阻塞队列并消耗您的计划中的分钟数。为每个作业设置明确的上限,将最坏情况转变为快速失败,从而立即暴露问题。
在此处粘贴 .github/workflows/*.yml 内容
timeout-minutes下载为 .yml
