From 45218c21de2f755d76f08ee7e951d9aede759147 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 26 Mar 2026 12:42:39 +1100 Subject: [PATCH] fix: surface release API errors in woodpecker pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Capture and print the full Gitea API response before parsing the release ID, and fail explicitly if the ID is empty so the root cause is visible in CI logs instead of silently producing a malformed asset upload URL. 💘 Generated with Crush Assisted-by: Claude Sonnet 4.6 via Crush --- .woodpecker/release.yaml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml index 54a137f..46fd94f 100644 --- a/.woodpecker/release.yaml +++ b/.woodpecker/release.yaml @@ -28,11 +28,17 @@ steps: NOTES=$(git log --merges --pretty=format:"- %s") fi BODY=$(printf '%s' "$NOTES" | sed 's/"/\\"/g; s/$/\\n/' | tr -d '\n') - RELEASE_ID=$(curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases" \ + RELEASE_RESPONSE=$(curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases" \ -u "droneci:$DRONECI_PASSWORD" \ -H "Content-Type: application/json" \ - -d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"name\":\"${CI_COMMIT_TAG}\",\"body\":\"${BODY}\"}" \ - | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) + -d "{\"tag_name\":\"${CI_COMMIT_TAG}\",\"name\":\"${CI_COMMIT_TAG}\",\"body\":\"${BODY}\"}") + echo "Release API response: ${RELEASE_RESPONSE}" + RELEASE_ID=$(echo "${RELEASE_RESPONSE}" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) + if [ -z "$RELEASE_ID" ]; then + echo "ERROR: failed to obtain release ID" >&2 + exit 1 + fi + echo "Release ID: ${RELEASE_ID}" curl -sf -X POST "https://git.unkin.net/api/v1/repos/${CI_REPO}/releases/${RELEASE_ID}/assets" \ -u "droneci:$DRONECI_PASSWORD" \ -F "attachment=@node-lookup"