Fail loudly when release uploads do not land
Full build / Import + headless tests (push) Successful in 35s
Full build / Full desktop build + optional release (push) Skipped

Follow-up to the publishing fix: CI created the v0.2.11 release and logged each
upload, but the assets never arrived, so the job looked successful while the
release was empty. The host root filesystem is full (7.8G, 100%), and Gitea
answered HTTP 500 "Attachments.Save: no space left on device".

- publish_release.sh now checks the HTTP status of every asset upload and prints the
  response body on failure, then verifies the release reports as many assets as were
  sent. Empty releases can no longer pass silently.
- Deleted the empty v0.2.11 release so the "latest" release (v0.2.10) still has all
  five artifacts; the tag itself remains.
- TODO/MEMORY record the host disk blocker with concrete cleanup commands and note
  that v0.2.11 artifacts are built locally in build/ for upload once space exists.
This commit is contained in:
zwitschi committed 2026-10-31 21:38:12 +01:00
1 parent b4d189c325
commit afd086ba11
3 files changed
+44 -3

No files matched your search

+24 -1
View File
@@ -99,8 +99,31 @@ for f in "${all_artifacts[@]}"; do
exit 1
fi
echo "==> Uploading $(basename "$f")"
curl -s -X POST "$API/$RELEASE_ID/assets" "${AUTH[@]}" -F "attachment=@$f" >/dev/null
# Fail loudly: a silent 4xx here used to leave a release with no artifacts while
# the job still reported success.
code="$(curl -sS -o /tmp/release-upload.json -w '%{http_code}' --retry 2 \
-X POST "$API/$RELEASE_ID/assets" "${AUTH[@]}" -F "attachment=@$f" || true)"
if [[ "$code" != "201" && "$code" != "200" ]]; then
echo "error: upload of $(basename "$f") failed with HTTP $code" >&2
cat /tmp/release-upload.json >&2 || true
echo "" >&2
exit 1
fi
done
# Verify the release actually carries the artifacts we just sent.
have="$(curl -sS "${AUTH[@]}" "$API/$RELEASE_ID" | python3 -c "
import sys, json
try:
d = json.load(sys.stdin)
except Exception:
print(0); raise SystemExit
print(len(d.get('assets', [])))" 2>/dev/null || echo 0)"
if [[ "${have:-0}" -lt "${#all_artifacts[@]}" ]]; then
echo "error: release has $have assets, expected ${#all_artifacts[@]}" >&2
exit 1
fi
echo "Verified $have artifacts on the release"
echo ""
echo "Release live: $HOST/$REPO/releases/tag/$TAG"