#!/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}" for asset in dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/jarvis-qvac-bare-*.tar.gz dist/SHA256SUMS; do [[ -f "${asset}" ]] || continue 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}"