forked from Solo-Web-Works/Projects-Portfolio
Make release creation idempotent (lookup existing release by tag first)
This commit is contained in:
@@ -90,6 +90,17 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
payload=$(python3 scripts/release-helper.py build-payload --github)
|
||||
# Look up existing release by tag (idempotent on re-run).
|
||||
release_json=$(curl -fsS \
|
||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
"${GH_API_URL}/repos/${REPO}/releases/tags/${TAG}" \
|
||||
|| true)
|
||||
if [ -n "$release_json" ] && echo "$release_json" | python3 -c 'import json,sys; sys.exit(0 if json.loads(sys.stdin.read()).get("id") else 1)' 2>/dev/null; then
|
||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
||||
upload_url=$(echo "$release_json" | python3 scripts/release-helper.py extract-upload-url)
|
||||
echo "Reusing existing GitHub release id=$release_id for tag $TAG"
|
||||
else
|
||||
release_json=$(curl -fsS -X POST \
|
||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
@@ -99,6 +110,7 @@ jobs:
|
||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
||||
upload_url=$(echo "$release_json" | python3 scripts/release-helper.py extract-upload-url)
|
||||
echo "Created GitHub release id=$release_id"
|
||||
fi
|
||||
curl -fsS -X POST \
|
||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||
-H "Accept: application/vnd.github+json" \
|
||||
@@ -118,6 +130,15 @@ jobs:
|
||||
API="${GH_API_URL%/}/api/v1"
|
||||
fi
|
||||
payload=$(python3 scripts/release-helper.py build-payload)
|
||||
# Look up existing release by tag (idempotent on re-run).
|
||||
release_json=$(curl -fsS \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
"${API}/repos/${REPO}/releases/tags/${TAG}" \
|
||||
|| true)
|
||||
if [ -n "$release_json" ] && echo "$release_json" | python3 -c 'import json,sys; sys.exit(0 if json.loads(sys.stdin.read()).get("id") else 1)' 2>/dev/null; then
|
||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
||||
echo "Reusing existing Gitea release id=$release_id for tag $TAG"
|
||||
else
|
||||
release_json=$(curl -fsS -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
@@ -125,6 +146,7 @@ jobs:
|
||||
"${API}/repos/${REPO}/releases")
|
||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
||||
echo "Created Gitea release id=$release_id"
|
||||
fi
|
||||
curl -fsS -X POST \
|
||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||
-H "Content-Type: application/zip" \
|
||||
|
||||
@@ -71,6 +71,8 @@ def main() -> int:
|
||||
return extract_field("id")
|
||||
if cmd == "extract-upload-url":
|
||||
return extract_field("upload_url")
|
||||
if cmd == "extract-tag":
|
||||
return extract_field("tag_name")
|
||||
return usage()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user