diff --git a/scripts/fetch-gitea-release.sh b/scripts/fetch-gitea-release.sh new file mode 100755 index 0000000..dcfdf0e --- /dev/null +++ b/scripts/fetch-gitea-release.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Erwartet: $TAG, $GITEA_URL, $GITEA_TOKEN, $GITEA_OWNER, $GITEA_REPO + +if [[ -z "${TAG:-}" ]]; then + echo "❌ TAG is not set." + exit 1 +fi + +# Defaults (können durch INPUT_* oder ENV überschrieben werden) +GITEA_URL="${INPUT_GITEA_URL:-${GITEA_URL:-https://gitea.example.tld}}" +GITEA_TOKEN="${INPUT_GITEA_TOKEN:-${GITEA_TOKEN:-}}" +GITEA_OWNER="${INPUT_GITEA_OWNER:-${GITEA_OWNER:-${GITHUB_REPOSITORY%%/*}}}" +GITEA_REPO="${INPUT_GITEA_REPO:-${GITEA_REPO:-${GITHUB_REPOSITORY##*/}}}" + +# Zielverzeichnis vorbereiten +OUT_DIR="/tmp/gitea_release_${TAG}" +mkdir -p "$OUT_DIR/assets" + +# Release-ID abrufen +RELEASE_META=$(curl -sf \ + -H "Authorization: token $GITEA_TOKEN" \ + "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/tags/$TAG") + +RELEASE_ID=$(echo "$RELEASE_META" | jq -r '.id') +if [[ -z "$RELEASE_ID" || "$RELEASE_ID" == "null" ]]; then + echo "❌ Release '$TAG' nicht gefunden." + exit 1 +fi + +# Vollständige Release-Details abrufen +RELEASE_JSON=$(curl -sf \ + -H "Authorization: token $GITEA_TOKEN" \ + "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/$RELEASE_ID") + +echo "$RELEASE_JSON" > "$OUT_DIR/release.json" +echo "✅ Metadaten gespeichert unter: $OUT_DIR/release.json" + +# Assets herunterladen +ASSETS=$(echo "$RELEASE_JSON" | jq -c '.assets[]?') + +for asset in $ASSETS; do + NAME=$(echo "$asset" | jq -r '.name') + URL=$(echo "$asset" | jq -r '.browser_download_url') + + echo "⬇ Lade Asset '$NAME' herunter ..." + curl -sfL \ + -H "Authorization: token $GITEA_TOKEN" \ + "$URL" \ + -o "$OUT_DIR/assets/$NAME" +done + +echo "GT_RSA_RELEASE_DIR=$OUT_DIR" >> "$GITHUB_ENV" + +echo "✅ Alle Assets gespeichert unter: $OUT_DIR/assets" +echo "✅ Release-Metadaten gespeichert unter: $OUT_DIR/release.json"