GitHub Actions 更新工具
讓 .github/workflows/*.yml 和 .github/workflows/*.yaml 檔案保持最新:掃描 Actions、解析最新版本並建議升級。
快速開始
當使用者提出類似問題時:
「更新我的 GitHub Actions」
「哪些 Actions 已經過時?」
「升級我的工作流程中的 Actions」
請依照下列流程操作,並回傳一份包含差異建議的 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 api repos/{owner}/{repo}/tags --jq '.[].name'(若gh可用)。- 透過
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 | current | latest | breaking? | file
- 每個 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 | Current | Latest | Breaking? | File |
|--------|---------|--------|-----------|------|
| actions/checkout | v3 | v4 | ⚠ yes | .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 沒有語意化版本標籤,請標記為「無法判定最新版本」。