develop
master
將 develop 上完成的 cleanup-release action 重整與多輪 AI review 修復合併回 master。內容涵蓋清理流程重寫、輸入驗證與安全強化、失敗回報語意修正、文件與 CI/CD 工作流整理。
src/index.js
created_at
KEEP_COUNT
DELETE_CONCURRENCY=4
Promise.allSettled
GITEA_SERVER_URL
GITEA_REPOSITORY
owner/repo
RUNNER_TOKEN
RUNNER_DEBUG=1
MAX_PAGES
action.yml
inputs.RUNNER_TOKEN
secrets.GITEA_TOKEN
secrets.RUNNER_TOKEN
Dockerfile
entrypoint.sh
README.md
.gitea/workflows/readme.md
ci.yaml
master.yaml
.gitea/ai-review/
KEEP_COUNT=0
- tag 刪除失敗後補上 hadFailure 檢查,確保以非 0 結束 - GITEA_SERVER_URL 的 log 改為遮罩後 origin,API URL 清除 userinfo/query - release id 驗證為正整數才組 DELETE URL - isEmptyOrNull 不再把字串 'null' 當空值,改在環境變數來源正規化 - 共用 keep-alive https.Agent 減少重複建連線 - 分頁抓取加入 MAX_PAGES 上限避免無限迴圈 - 批次大小抽成 DELETE_CONCURRENCY 常數 - 錯誤處理保留 currentStage 階段上下文 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- processInBatches 改用 Promise.allSettled 並回傳結果集合,單筆例外不再中止同批,移除共享 hadFailure 狀態 - GITEA_REPOSITORY 嚴格驗證 owner/repo 格式並逐段 encodeURIComponent,拒絕 . / .. 路徑片段 - GITEA_SERVER_URL 於參數檢查階段驗證為合法 HTTPS 絕對 URL,錯誤不再留到中途才拋出 - KEEP_COUNT 下限改為 1 並限制在安全整數範圍,避免設 0 清空所有 release 或大數失真 - DELETE 請求改以 collectBody: false 丟棄回應串流,只保留狀態碼 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewed-on: #1
- release id 非正整數、tag 缺少名稱時改視為失敗(fail + return false),壞資料不再被靜默當成功 - 分頁上限改為可用環境變數 MAX_PAGES 覆寫(預設 1000),超限錯誤訊息附調高方式 - 未捕捉錯誤預設只輸出 error.message,RUNNER_DEBUG=1 時才輸出完整 stack Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
變更摘要
將
develop上完成的 cleanup-release action 重整與多輪 AI review 修復合併回master。內容涵蓋清理流程重寫、輸入驗證與安全強化、失敗回報語意修正、文件與 CI/CD 工作流整理。重點變更
核心程式(
src/index.js)created_at排序後保留前KEEP_COUNT筆、其餘刪除,再清除未對應保留 release 的 tag;批次並行刪除(DELETE_CONCURRENCY=4)Promise.allSettled,單筆網路例外不中止同批;任何刪除失敗或資料異常(release id 非正整數、tag 缺名稱)都會讓 job 以非 0 結束,CI 不再誤判成功GITEA_SERVER_URL須為合法 HTTPS URL、GITEA_REPOSITORY嚴格owner/repo格式並逐段編碼(防路徑注入)、KEEP_COUNT為安全整數範圍內的正整數(下限 1,避免全刪)RUNNER_TOKEN遮罩、錯誤預設只輸出 message(RUNNER_DEBUG=1才含 stack)、log 內容去除控制字元MAX_PAGES環境變數覆寫)、共用 keep-alive 連線、DELETE 丟棄回應串流設定與文件
action.yml:輸入參數註解化,KEEP_COUNT預設 2,token 來源支援inputs.RUNNER_TOKEN/secrets.GITEA_TOKEN/secrets.RUNNER_TOKEN依序回退Dockerfile/entrypoint.sh:容器化執行環境整理,啟動時輸出 action 資訊橫幅README.md/.gitea/workflows/readme.md:重建專案說明與工作流文件ci.yaml、master.yaml):版本輸出與流程整理.gitea/ai-review/:歷輪 review 的 findings 已全數解決(目前為空),13 筆誤報判定登記於 exclusions影響範圍
KEEP_COUNT=0不再允許、任何刪除失敗都會使 job 失敗MAX_PAGES調高分頁上限風險與注意事項