forked from Eeveid/lightOps
🐛 fix(release): 兼容不支持 Releases 的仓库
- 发布脚本在 Gitea Releases API 返回 404 时不再直接失败 - 对未开启 Releases 或 Token 无 Release 权限的仓库改为输出已生成的包路径并跳过上传 - 保持支持 Releases 的仓库仍按原逻辑创建 Release 并上传附件
This commit is contained in:
@@ -149,6 +149,23 @@ api_post_json() {
|
||||
"$1"
|
||||
}
|
||||
|
||||
api_post_json_with_status() {
|
||||
local output_file status
|
||||
output_file="$(mktemp)"
|
||||
status="$(curl -sS -o "$output_file" -w '%{http_code}' -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$2" \
|
||||
"$1")" || {
|
||||
cat "$output_file" >&2 || true
|
||||
rm -f "$output_file"
|
||||
return 1
|
||||
}
|
||||
cat "$output_file"
|
||||
rm -f "$output_file"
|
||||
printf '\n%s' "$status"
|
||||
}
|
||||
|
||||
release_id_from_json() {
|
||||
case "$JSON_RUNTIME" in
|
||||
node)
|
||||
@@ -185,14 +202,26 @@ fi
|
||||
|
||||
release_url="$(api_url "releases/tags/${TAG}")"
|
||||
release_json=""
|
||||
if release_json="$(api_get "$release_url" 2>/dev/null)"; then
|
||||
release_status="$(curl -sS -o /dev/null -w '%{http_code}' -H "Authorization: token ${GITEA_TOKEN}" "$release_url" || true)"
|
||||
if [[ "$release_status" == "200" ]] && release_json="$(api_get "$release_url" 2>/dev/null)"; then
|
||||
log "Release 已存在:$TAG"
|
||||
else
|
||||
log "创建 Release:$TAG"
|
||||
title_json="$(printf '%s' "$TITLE" | json_escape)"
|
||||
notes_json="$(printf '%s' "$NOTES" | json_escape)"
|
||||
payload="{\"tag_name\":\"${TAG}\",\"target_commitish\":\"${TARGET}\",\"name\":${title_json},\"body\":${notes_json},\"draft\":false,\"prerelease\":${PRERELEASE}}"
|
||||
release_json="$(api_post_json "$(api_url releases)" "$payload")"
|
||||
create_result="$(api_post_json_with_status "$(api_url releases)" "$payload")" || fail "创建 Release 请求失败"
|
||||
create_status="${create_result##*$'\n'}"
|
||||
release_json="${create_result%$'\n'*}"
|
||||
if [[ "$create_status" == "404" ]]; then
|
||||
log "当前仓库不支持 Releases 或 Token 无 Release 权限,跳过发布"
|
||||
printf '\n发布包已生成但未上传 Release:\n'
|
||||
for package in "${PACKAGES[@]}"; do
|
||||
printf '%s\n' "$package"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
[[ "$create_status" == "201" || "$create_status" == "200" ]] || fail "创建 Release 失败,HTTP 状态码:$create_status"
|
||||
fi
|
||||
|
||||
release_id="$(printf '%s' "$release_json" | release_id_from_json)"
|
||||
|
||||
Reference in New Issue
Block a user