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
|
exit 1
|
||||||
fi
|
fi
|
||||||
payload=$(python3 scripts/release-helper.py build-payload --github)
|
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 \
|
release_json=$(curl -fsS -X POST \
|
||||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github+json" \
|
-H "Accept: application/vnd.github+json" \
|
||||||
@@ -99,6 +110,7 @@ jobs:
|
|||||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
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)
|
upload_url=$(echo "$release_json" | python3 scripts/release-helper.py extract-upload-url)
|
||||||
echo "Created GitHub release id=$release_id"
|
echo "Created GitHub release id=$release_id"
|
||||||
|
fi
|
||||||
curl -fsS -X POST \
|
curl -fsS -X POST \
|
||||||
-H "Authorization: token ${GITHUB_TOKEN}" \
|
-H "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
-H "Accept: application/vnd.github+json" \
|
-H "Accept: application/vnd.github+json" \
|
||||||
@@ -118,6 +130,15 @@ jobs:
|
|||||||
API="${GH_API_URL%/}/api/v1"
|
API="${GH_API_URL%/}/api/v1"
|
||||||
fi
|
fi
|
||||||
payload=$(python3 scripts/release-helper.py build-payload)
|
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 \
|
release_json=$(curl -fsS -X POST \
|
||||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
@@ -125,6 +146,7 @@ jobs:
|
|||||||
"${API}/repos/${REPO}/releases")
|
"${API}/repos/${REPO}/releases")
|
||||||
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
release_id=$(echo "$release_json" | python3 scripts/release-helper.py extract-id)
|
||||||
echo "Created Gitea release id=$release_id"
|
echo "Created Gitea release id=$release_id"
|
||||||
|
fi
|
||||||
curl -fsS -X POST \
|
curl -fsS -X POST \
|
||||||
-H "Authorization: token ${GITEA_TOKEN}" \
|
-H "Authorization: token ${GITEA_TOKEN}" \
|
||||||
-H "Content-Type: application/zip" \
|
-H "Content-Type: application/zip" \
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ def main() -> int:
|
|||||||
return extract_field("id")
|
return extract_field("id")
|
||||||
if cmd == "extract-upload-url":
|
if cmd == "extract-upload-url":
|
||||||
return extract_field("upload_url")
|
return extract_field("upload_url")
|
||||||
|
if cmd == "extract-tag":
|
||||||
|
return extract_field("tag_name")
|
||||||
return usage()
|
return usage()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user