fix: make release deployment safely repeatable
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const tag = process.argv[2];
|
||||
if (!tag) {
|
||||
console.error("用法:release-tag-exists.mjs <tag>");
|
||||
process.exit(2);
|
||||
}
|
||||
|
||||
let body = "";
|
||||
for await (const chunk of process.stdin) body += chunk;
|
||||
|
||||
let value;
|
||||
try {
|
||||
value = JSON.parse(body);
|
||||
} catch {
|
||||
console.error("无法解析 Gitea Release 列表 JSON");
|
||||
process.exit(2);
|
||||
}
|
||||
|
||||
const rows = Array.isArray(value)
|
||||
? value
|
||||
: Array.isArray(value?.data)
|
||||
? value.data
|
||||
: Array.isArray(value?.releases)
|
||||
? value.releases
|
||||
: undefined;
|
||||
if (!rows) {
|
||||
console.error("Gitea Release 列表 JSON 结构不受支持");
|
||||
process.exit(2);
|
||||
}
|
||||
|
||||
const found = rows.some((row) => row && typeof row === "object" && Object.entries(row).some(([key, entry]) => {
|
||||
const normalizedKey = key.toLowerCase().replace(/[^a-z]/g, "");
|
||||
return (normalizedKey === "tag" || normalizedKey === "tagname") && entry === tag;
|
||||
}));
|
||||
process.exit(found ? 0 : 1);
|
||||
Reference in New Issue
Block a user