SuperAPI AI 工具集

action-remediate

部署与运维

查看项目

更新于 10-16 08:29

技能介绍

用途

action-remediate 用于修复由 action-audit 技能识别出的 GitHub Actions 动作使用问题。它针对每个受影响仓库,按照既定的修复策略对工作流文件中的动作引用进行修正,并协助创建草稿 PR。

主要能力

  • 按动作类型应用不同修复策略:
    • pin to main:针对内部 bitwarden/ 动作,将引用改为 @main,例如 uses: bitwarden/gh-actions/action@v1 改为 uses: bitwarden/gh-actions/action@main,无需解析 SHA。
    • pin update:针对外部动作,更新为经过验证的 40 位 SHA,并附内联版本注释,格式为 uses: <action>@<sha> # <original-ref>。
    • replace:替换为其他动作。应用前需确认替换动作在 bitwarden/workflow-linter 的已批准动作列表中,然后替换为 uses: <new-action>@<sha> # <tag>。
  • 为每个仓库创建修复分支:git checkout -b fix/action-remediation-<action-name-slug>。
  • 展示 git diff 并在继续前获取用户确认。
  • 生成提交、推送命令供用户手动执行,并在推送确认后创建草稿 PR。
  • 输出最终汇总,包含仓库、变更文件、PR 创建情况和备注。

使用方式

  1. 确认审计发现:确认要修复的仓库范围(全部、子集或特定仓库)、修复策略(pin to main、pin update 或 replace),以及目标 SHA、替换动作或 @main 的确认。若不清楚需先询问用户。
  2. 按仓库应用修复:询问用户仓库克隆的基础目录,检查 <base-dir>/<repo> 是否存在本地克隆,不存在则跳过并告知用户。创建修复分支后按策略修改受影响文件,展示 diff 并获取确认。
  3. 提交、推送与创建 PR:不自行运行暂存、提交或推送命令,而是向用户展示建议命令块供其手动执行。用户确认推送后,使用 gh pr create 创建草稿 PR,标题为 "Remediate <action-name> action usage",正文包含摘要、所采取的动作和原因。
  4. 最终汇总:输出所有操作的汇总表格,并提醒用户代码搜索结果可能存在延迟,若为安全事件需手动检查以确保没有遗漏仓库。

适用场景

  • 修复由 action-audit 发现的 GitHub Actions 动作引用问题,如未固定引用、已弃用动作或被入侵动作。
  • 需要批量对多个仓库进行动作修复并创建草稿 PR 的场景。

限制与安全约束

  • 未经确认不得进行变更类 API 调用;gh api 的 GET 请求可自由使用,但使用 -X POST、-X PUT、-X PATCH 或 -X DELETE 的调用必须先展示给用户并获得批准。
  • 禁止强制推送、删除分支或删除仓库。
  • 仅修改 .github/ 下的文件,不得触碰工作流文件之外的应用代码、脚本或配置。
  • 提交前需展示 diff 并获取确认。
  • 所有 PR 必须以草稿形式创建。
  • 遇到模糊的发现或可能破坏工作流的修复时,应停止并询问,而非猜测。
  • 代码搜索结果可能存在延迟,安全事件场景下需手动验证是否遗漏仓库。