Files
OpenUniFi/scripts/ci/gitea-release.sh
T
Koda a0ee657a02
Build and publish release / metadata (push) Successful in 42s
Build and publish release / create-release (push) Successful in 55s
Build and publish release / build (push) Failing after 4m11s
Build and publish release / publish-release (push) Skipped
Added Release Pipeline (#29)
Reviewed-on: #29
2026-07-15 19:39:51 +01:00

43 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
action=${1:-}
: "${GITEA_TOKEN:?GITEA_TOKEN is required}"
: "${GITHUB_SERVER_URL:?GITHUB_SERVER_URL is required}"
: "${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is required}"
api="${GITHUB_SERVER_URL%/}/api/v1/repos/${GITHUB_REPOSITORY}"
auth_header="Authorization: token ${GITEA_TOKEN}"
case "$action" in
create)
: "${VERSION:?VERSION is required}"
tag="v${VERSION}"
if response=$(curl -fsS -H "$auth_header" "$api/releases/tags/$tag" 2>/dev/null); then
jq -er '.id' <<<"$response"
exit 0
fi
openwrt_release=$(jq -er '.openwrt_release' .gitea/release-targets.json)
payload=$(jq -n --arg tag "$tag" --arg version "$VERSION" --arg sha "${GITHUB_SHA:-main}" --arg openwrt "$openwrt_release" '{tag_name: $tag, target_commitish: $sha, name: ("openUniFi " + $version), body: ("Automated multi-architecture build for OpenWrt " + $openwrt + "."), draft: true, prerelease: false}')
curl -fsS -X POST -H "$auth_header" -H 'Content-Type: application/json' --data "$payload" "$api/releases" | jq -er '.id'
;;
upload)
: "${RELEASE_ID:?RELEASE_ID is required}"
: "${ASSET:?ASSET is required}"
[[ -f $ASSET ]] || { echo "asset not found: $ASSET" >&2; exit 1; }
asset_name=$(basename -- "$ASSET")
old_asset_id=$(curl -fsS -H "$auth_header" "$api/releases/$RELEASE_ID/assets" | jq -r --arg name "$asset_name" '.[] | select(.name == $name) | .id' | head -n 1)
if [[ -n $old_asset_id ]]; then
curl -fsS -X DELETE -H "$auth_header" "$api/releases/$RELEASE_ID/assets/$old_asset_id"
fi
curl -fsS -X POST -H "$auth_header" -F "attachment=@${ASSET}" "$api/releases/$RELEASE_ID/assets?name=$asset_name" >/dev/null
;;
publish)
: "${RELEASE_ID:?RELEASE_ID is required}"
curl -fsS -X PATCH -H "$auth_header" -H 'Content-Type: application/json' --data '{"draft":false}' "$api/releases/$RELEASE_ID" >/dev/null
;;
*)
echo "usage: $0 {create|upload|publish}" >&2
exit 2
;;
esac