42 lines
1.9 KiB
Bash
Executable File
42 lines
1.9 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}"
|
|
|
|
for asset in dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip 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}"
|