Jeffery and Claude Opus 4.8
353a6af7c3
fix(release-cleanup): 去除 server URL 結尾斜線並驗證 release id 為正整數
...
- loadConfig 去除 GITEA_SERVER_URL 結尾的 /,避免拼出 //api/v1 錯誤路徑
- cleanupReleases 要求 id 為正整數,非整數一律略過(縱深防禦,不僅依賴編碼)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 13:55:48 +08:00
Jeffery and Claude Opus 4.8
9e33cb8ba8
fix(release-cleanup): selectReleasesToDelete 在時間相同時以 id 決定順序
...
排序加入次要鍵(id 數值,大者視為新),避免多筆 created_at 相同時保留/
刪除的選擇因引擎排序穩定性而不確定。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:43:16 +08:00
Jeffery and Claude Opus 4.8
87db9030d6
perf(release-cleanup): selectReleasesToDelete 預先計算時間戳
...
排序前先一次性計算各 release 的 created_at 時間戳,避免在排序比較器中
重複呼叫 Date.parse;排序結果與原行為等價。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:29:30 +08:00
Jeffery and Claude Opus 4.8
aa4f6364e2
fix(release-cleanup): 加入分頁上限並編碼刪除 URL 路徑片段
...
- fetchAllPages 加入 MAX_PAGES(1000)安全斷點,避免 API 異常時無限迴圈
- 刪除 release/tag 時對 id 與 tag 名稱做 encodeURIComponent,
防止特殊字元造成路徑穿越(正常數值/版本字串編碼後不變)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 11:21:56 +08:00
Jeffery and Claude Opus 4.8
154ab032bf
fix(release-cleanup): 強化輸入驗證、請求逾時與錯誤處理
...
解決 AI review 的安全性與健壯性問題:
- 驗證 GITEA_SERVER_URL 為合法 http/https URL(降低 SSRF 風險)
- 驗證 GITEA_REPOSITORY 為 owner/repo 形式並拒絕路徑穿越
- 為所有 fetch 請求加上 30 秒逾時(AbortSignal.timeout),避免卡死
- fetchAllPages 解析前檢查 content-type,非 JSON 時拋出明確錯誤
- selectReleasesToDelete 對無效 created_at 防呆,避免 NaN 排序
- index.js 匯出 main 並加上直接執行守衛,錯誤輸出含類型與堆疊
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:55:45 +08:00
Jeffery and Claude Opus 4.8
7e6f9ef3f6
docs(release-cleanup): 補齊 config/gitea-client/releases/tags 的 JSDoc
...
為 loadConfig、GiteaClient(含 fetchAllPages/deleteResource)、
selectReleasesToDelete/cleanupReleases、categorizeTags/cleanupOrphanTags
補上完整 JSDoc(參數、回傳、例外、行為說明)。僅註解變更。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:46:20 +08:00
Jeffery and Claude Opus 4.8
b1aa8730a2
refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js 模組
...
依功能分組為 logger/validate/config/gitea-client/releases/tags 模組,
entrypoint.sh 改為呼叫 node /app/index.js,Dockerfile 改用 node:20-alpine 基底。
對外行為(清理舊 release 與未指定 release 的 tag)維持不變。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 10:35:19 +08:00