refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js #6

Closed
jiantw83 wants to merge 60 commits from refactor/nodejs-rewrite-20260626-103443 into develop
Showing only changes of commit 3586ab3803 - Show all commits
+4 -1
View File
1
@@ -42,7 +42,10 @@ export function categorizeTags(tags, releaseTagNames) {
export async function cleanupOrphanTags(client, config) { export async function cleanupOrphanTags(client, config) {
section('刪除未指定 release 的 tag') section('刪除未指定 release 的 tag')
// 重新取得 release 清單,得到刪除舊版本後仍指定 tag 的成品 // 重新取得 release 清單,得到刪除舊版本後仍指定 tag 的成品
// 已知限制(TOCTOU):release 與 tag 為兩次獨立 API 呼叫,Gitea 無交易機制;
// 若兩次呼叫之間有新 release 關聯到某 tag,該 tag 仍可能基於過時快照被誤判為孤立。
// 此為排程清理任務可接受的殘餘競態(下次執行會自我修正),完整原子性留待人工評估。
const currentReleases = await client.fetchAllPages(config.releaseApiUrl) const currentReleases = await client.fetchAllPages(config.releaseApiUrl)
const releaseTagNames = currentReleases.map((release) => release.tag_name) const releaseTagNames = currentReleases.map((release) => release.tag_name)
3