From 3a4c9ea1c136a7c3142124068ab77df05c28390e Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Thu, 26 Mar 2026 12:48:54 +1100 Subject: [PATCH] fix: surface release API errors in woodpecker pipeline (#5) 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 Reviewed-on: https://git.unkin.net/unkin/node-lookup/pulls/5 --- .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"