GitHub Actions 更新器
保持 .github/workflows/*.yml 和 .github/workflows/*.yaml 文件更新:扫描 Action,解析最新版本,并提出升级建议。
快速开始
当用户询问类似以下问题时:
"更新我的 GitHub Actions" "哪些 Action 已经过时?" "升级我的工作流中的 Action"
按照下面的工作流执行,并返回带有差异风格建议的 Markdown 报告。
工作流
-
扫描工作流
- 查找所有
.github/workflows/*.yml和.github/workflows/*.yaml文件。 - 如果不存在,告知用户并停止。
- 查找所有
-
提取
uses:引用- 解析每个工作流中的
uses:行。 - 跳过:
- 本地路径:
./... - Docker 引用:
docker://... - 完整的 SHA 提交:任何看起来像 40 字符十六进制 SHA 的内容
- 本地路径:
- 记录:
action、current_version、workflow_file、line_number。
- 解析每个工作流中的
-
解析最新版本
- 将每个 Action 拆分为
owner/repo。 - 按以下顺序尝试工具:
- 如果
gh可用,使用gh api repos/{owner}/{repo}/tags --jq '.[].name'。 - 使用
fetch访问https://api.github.com/repos/{owner}/{repo}/tags。 - 使用 Brave Search / Google Search MCP 搜索
"{owner}/{repo} latest release tag"。
- 如果
- 过滤标签以确保是有效的语义化版本。
- 默认优先使用主版本标签(如
v5)而非完整语义化版本(如v5.3.1)。 - 如果没有主版本标签,则回退到最高的语义化版本标签。
- 将每个 Action 拆分为
-
检测重大变更
- 如果最新版本的主版本号高于当前版本,则标记为重大变更。
- 与下方的内置注册表交叉检查以获取已知警告。
-
生成建议报告
- 生成包含以下内容的 Markdown 报告:
- 摘要表格:Action | 当前版本 | 最新版本 | 重大变更?| 文件
- 每个 Action 的差异块
- 重大变更警告(带
⚠)
- 除非用户明确要求,否则不要编辑工作流文件。
- 生成包含以下内容的 Markdown 报告:
重大变更注册表
- action: actions/checkout
from_major: 3
to_major: 4
warning: "Node 运行时从 16 升级到 20。请检查自定义运行器和自托管设置。"
- action: actions/setup-node
from_major: 3
to_major: 4
warning: "Node 16 运行时已弃用;现在使用 Node 20。"
- action: actions/setup-go
from_major: 4
to_major: 5
warning: "Node 20 运行时。请验证任何自定义缓存键或副作用。"
输出模板
## GitHub Actions 更新报告
| Action | 当前版本 | 最新版本 | 重大变更?| 文件 |
|--------|---------|--------|-----------|------|
| actions/checkout | v3 | v4 | ⚠ 是 | .github/workflows/ci.yml |
### 建议的更改
`.github/workflows/ci.yml`:
```diff
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
重大变更警告
- actions/checkout@v3 → v4: Node 运行时从 16 升级到 20。请检查自定义运行器和自托管设置。
## 规则
- 永远不要静默写入工作流文件。
- 在任何编辑之前,务必显示差异风格预览。
- 如果遇到 GitHub API 速率限制,则回退到搜索 MCP 或手动指导。
- 如果某个 Action 没有语义化版本标签,则注明“无法确定最新版本”。