ci: remove broken concurrency block, make release step idempotent
Some checks failed
Android Build & Publish / android (push) Has been cancelled
Some checks failed
Android Build & Publish / android (push) Has been cancelled
- Removed concurrency/cancel-in-progress: on this Gitea runner version cancelled runs get re-queued causing an infinite restart loop - Release creation now checks for existing tag first (GET releases/tags/TAG) and reuses the existing release ID if found, preventing the second duplicate run from failing with a 409/422 tag-already-exists error
This commit is contained in:
@@ -4,12 +4,6 @@ on:
|
|||||||
push:
|
push:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
# Only one run per branch at a time. A new push cancels any in-progress run,
|
|
||||||
# preventing duplicate builds when the runner picks up the same event twice.
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # required for creating releases
|
contents: write # required for creating releases
|
||||||
packages: write
|
packages: write
|
||||||
@@ -186,13 +180,20 @@ jobs:
|
|||||||
MD_LIST=$(echo "$COMMIT_LOG" | sed 's/^/- /')
|
MD_LIST=$(echo "$COMMIT_LOG" | sed 's/^/- /')
|
||||||
BODY=$(printf '%s' "$MD_LIST" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
|
BODY=$(printf '%s' "$MD_LIST" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
|
||||||
|
|
||||||
# ── Create the release ───────────────────────────────────────────────
|
# ── Create release (idempotent: reuse existing tag if already present) ───
|
||||||
RESP=$(curl -sf -X POST "$API/releases" \
|
EXISTING=$(curl -sf "$API/releases/tags/$TAG" \
|
||||||
-H "Authorization: token $TOKEN" \
|
-H "Authorization: token $TOKEN" || true)
|
||||||
-H "Content-Type: application/json" \
|
if [[ -n "$EXISTING" ]]; then
|
||||||
-d "{\"tag_name\":\"$TAG\",\"name\":\"Build $VERSION\",\"body\":$BODY,\"draft\":false,\"prerelease\":false}")
|
RELEASE_ID=$(echo "$EXISTING" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
|
||||||
RELEASE_ID=$(echo "$RESP" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
|
echo "Release $TAG already exists (id=$RELEASE_ID) — reusing."
|
||||||
echo "Created release $TAG (id=$RELEASE_ID)"
|
else
|
||||||
|
RESP=$(curl -sf -X POST "$API/releases" \
|
||||||
|
-H "Authorization: token $TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"tag_name\":\"$TAG\",\"name\":\"Build $VERSION\",\"body\":$BODY,\"draft\":false,\"prerelease\":false}")
|
||||||
|
RELEASE_ID=$(echo "$RESP" | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
|
||||||
|
echo "Created release $TAG (id=$RELEASE_ID)"
|
||||||
|
fi
|
||||||
|
|
||||||
# ── Upload APKs as release assets ────────────────────────────────────
|
# ── Upload APKs as release assets ────────────────────────────────────
|
||||||
upload_asset() {
|
upload_asset() {
|
||||||
|
|||||||
Reference in New Issue
Block a user