From 997b74129ecb37c185fb27a55947cbdf16a43918 Mon Sep 17 00:00:00 2001 From: openhands Date: Mon, 20 Jul 2026 19:14:09 +0200 Subject: [PATCH] fix: harden release step (validate vars, per-curl http codes, diagnostics) to debug exit 3 --- .gitea/workflows/pack.yaml | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/pack.yaml b/.gitea/workflows/pack.yaml index 3ecaea79..5327e85b 100644 --- a/.gitea/workflows/pack.yaml +++ b/.gitea/workflows/pack.yaml @@ -252,17 +252,30 @@ jobs: if: steps.check.outputs.changed == 'true' run: | set -e + : "${PACK_FILE:?PACK_FILE not set}" + : "${GITEA_API:?GITEA_API not set}" + : "${GITEA_REPO:?GITEA_REPO not set}" + T="${TOKEN:-${GITEA_TOKEN}}" + [ -n "$T" ] || { echo "No token available"; exit 1; } BODY="$(jq -Rs '.' < /tmp/pack-body.md)" PAYLOAD="$(jq -n --arg tag "${PACK_VERSION}" --arg name "${PACK_VERSION}" --arg body "$BODY" '{tag_name: $tag, name: $name, body: $body, draft: false, prerelease: false}')" - T="${TOKEN:-$GITEA_TOKEN}" + echo "Creating release via ${GITEA_API}/repos/${GITEA_REPO}/releases" HTTP="$(curl -s -w '%{http_code}' -o /tmp/pack-rel.json \ -X POST "${GITEA_API}/repos/${GITEA_REPO}/releases" \ - -H "Authorization: token ${T}" -H "Content-Type: application/json" -d "$PAYLOAD")" + -H "Authorization: token ${T}" -H "Content-Type: application/json" -d "$PAYLOAD" || echo 000)" + echo "Create release HTTP: ${HTTP}" + cat /tmp/pack-rel.json | head -c 500; echo if [ "${HTTP}" = "409" ]; then - REL_ID="$(curl -sf "${GITEA_API}/repos/${GITEA_REPO}/releases" -H "Authorization: token ${T}" | jq -r ".[] | select(.tag_name==\"${PACK_VERSION}\") | .id")" - HTTP="$(curl -s -w '%{http_code}' -o /tmp/pack-rel.json -X PATCH "${GITEA_API}/repos/${GITEA_REPO}/releases/${REL_ID}" -H "Authorization: token ${T}" -H "Content-Type: application/json" -d "$PAYLOAD")" + REL_ID="$(curl -sf "${GITEA_API}/repos/${GITEA_REPO}/releases" -H "Authorization: token ${T}" | jq -r ".[] | select(.tag_name==\"${PACK_VERSION}\") | .id" || true)" + HTTP="$(curl -s -w '%{http_code}' -o /tmp/pack-rel.json -X PATCH "${GITEA_API}/repos/${GITEA_REPO}/releases/${REL_ID}" -H "Authorization: token ${T}" -H "Content-Type: application/json" -d "$PAYLOAD" || echo 000)" + echo "Patch release HTTP: ${HTTP}" fi - REL_ID="$(jq -r '.id' /tmp/pack-rel.json)" - curl -s -o /dev/null -X POST "${GITEA_API}/repos/${GITEA_REPO}/releases/${REL_ID}/assets?name=${PACK_VERSION}.tar.gz" \ - -H "Authorization: token ${T}" -H "Content-Type: application/gzip" --data-binary @"${PACK_FILE}" + REL_ID="$(jq -r '.id' /tmp/pack-rel.json 2>/dev/null || echo "")" + [ -n "$REL_ID" ] || { echo "No release ID from response"; exit 1; } + echo "Uploading asset to release ${REL_ID}" + UP="$(curl -s -w '%{http_code}' -o /tmp/pack-asset.json \ + -X POST "${GITEA_API}/repos/${GITEA_REPO}/releases/${REL_ID}/assets?name=${PACK_VERSION}.tar.gz" \ + -H "Authorization: token ${T}" -H "Content-Type: application/gzip" --data-binary @"${PACK_FILE}" || echo 000)" + echo "Asset upload HTTP: ${UP}" + cat /tmp/pack-asset.json | head -c 300; echo echo "Release ${PACK_VERSION} created with pack asset"