Files
gnome-jarvis/packaging/publish-gitea-release.sh
T
snxravenandCursor c88062ba69
Rolling release / release (push) Failing after 6m40s
Ship the Bare ELF in the release and stop baking host paths into the service.
The rolling bundle already contains the runtime binary. The installer now starts that file through a relative launcher, and the checkout unit is no longer packed for other users.

Co-authored-by: Cursor <[email protected]>
2026-09-14 12:29:26 -04:00

49 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
: "${GITEA_SERVER_URL:?GITEA_SERVER_URL is required}"
: "${GITEA_REPOSITORY:?GITEA_REPOSITORY is required}"
: "${GITEA_SHA:?GITEA_SHA is required}"
: "${RELEASE_TOKEN:?RELEASE_TOKEN is required}"
API="${GITEA_SERVER_URL%/}/api/v1/repos/${GITEA_REPOSITORY}"
AUTH=(-H "Authorization: token ${RELEASE_TOKEN}" -H 'Accept: application/json')
JSON=(-H 'Content-Type: application/json')
TAG="rolling"
release_json="$(curl -fsS "${AUTH[@]}" "${API}/releases/tags/${TAG}" 2>/dev/null || true)"
if [[ -n "${release_json}" ]]; then
release_id="$(jq -r '.id // empty' <<<"${release_json}")"
if [[ -n "${release_id}" ]]; then
curl -fsS -X DELETE "${AUTH[@]}" "${API}/releases/${release_id}" >/dev/null
fi
fi
# This Gitea instance exposes tag replacement through the repository tag API;
# it does not implement PATCH /git/refs/{ref}.
curl -fsS -X DELETE "${AUTH[@]}" "${API}/tags/${TAG}" >/dev/null 2>&1 || true
tag_payload="$(jq -nc --arg sha "${GITEA_SHA}" --arg tag "${TAG}" \
'{tag_name:$tag, target:$sha, message:"Automated rolling tag"}')"
curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" "${API}/tags" --data "${tag_payload}" >/dev/null
release_payload="$(jq -nc --arg tag "${TAG}" --arg sha "${GITEA_SHA}" \
'{tag_name:$tag, target_commitish:$sha, name:("Rolling " + ($sha[0:12])), body:"Automated Gitea rolling release from main.", draft:false, prerelease:true}')"
created="$(curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" "${API}/releases" --data "${release_payload}")"
release_id="$(jq -r '.id // empty' <<<"${created}")"
test -n "${release_id}"
shopt -s nullglob
bare_assets=(dist/jarvis-qvac-bare-*.tar.gz)
if (( ${#bare_assets[@]} == 0 )); then
echo "Refusing to publish: the Bare runtime bundle is missing." >&2
exit 1
fi
shopt -u nullglob
for asset in dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/jarvis-qvac-bare-*.tar.gz dist/SHA256SUMS; do
[[ -f "${asset}" ]] || { echo "Refusing to publish: missing ${asset}" >&2; exit 1; }
curl -fsS -X POST "${AUTH[@]}" \
"${API}/releases/${release_id}/assets?name=$(basename "${asset}")" \
-F "attachment=@${asset}" >/dev/null
done
echo "Published Gitea rolling release ${TAG} for ${GITEA_SHA:0:12}"