ARIA-AGENT/release.sh

135 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# ════════════════════════════════════════════════
# ARIA — Release Script
# Baut APK, taggt, erstellt Gitea Release
# Verwendung: ./release.sh 1.2.0
# Gitea-Kennwort wird interaktiv abgefragt.
# ════════════════════════════════════════════════
set -e
# ── Farben ────────────────────────────────────
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
# ── Parameter ─────────────────────────────────
VERSION=${1:?"Usage: ./release.sh <version> (z.B. 1.2.0)"}
TAG="v$VERSION"
# ── Gitea-Konfiguration ──────────────────────
# Aus .env lesen falls vorhanden (GITEA_URL, GITEA_REPO, GITEA_USER)
if [ -f .env ]; then
source .env
fi
GITEA_URL="${GITEA_URL:?"GITEA_URL nicht gesetzt (in .env oder als Umgebungsvariable)"}"
GITEA_REPO="${GITEA_REPO:?"GITEA_REPO nicht gesetzt (z.B. stefan/aria-agent)"}"
GITEA_USER="${GITEA_USER:-$(echo "$GITEA_REPO" | cut -d'/' -f1)}"
echo -e "${CYAN}╔═══════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ ARIA Release — ${TAG}$(printf '%*s' $((19 - ${#TAG})) '')${NC}"
echo -e "${CYAN}╚═══════════════════════════════════════╝${NC}"
echo ""
# ── Kennwort abfragen ─────────────────────────
echo -e "${YELLOW}Gitea-Login: ${GITEA_USER}${NC}"
read -s -p "Gitea-Kennwort: " GITEA_PASS
echo ""
# Credentials testen
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
-u "${GITEA_USER}:${GITEA_PASS}" \
"$GITEA_URL/api/v1/user")
if [ "$HTTP_CODE" != "200" ]; then
echo -e "${RED}Login fehlgeschlagen (HTTP $HTTP_CODE). Kennwort korrekt?${NC}"
exit 1
fi
echo -e " ${GREEN}${NC} Login erfolgreich"
echo ""
# ── APK bauen ─────────────────────────────────
echo -e "${GREEN}[1/4] APK bauen...${NC}"
cd android
./build.sh release
cd ..
APK_PATH="android/ARIA-Cockpit-release.apk"
if [ ! -f "$APK_PATH" ]; then
echo -e "${RED}APK nicht gefunden: $APK_PATH${NC}"
echo -e "${RED}Build fehlgeschlagen.${NC}"
exit 1
fi
APK_NAME="ARIA-${TAG}.apk"
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
echo -e " ${GREEN}${NC} APK gebaut ($APK_SIZE)"
echo ""
# ── Git Tag ───────────────────────────────────
echo -e "${GREEN}[2/4] Git Tag $TAG...${NC}"
if git rev-parse "$TAG" &>/dev/null; then
echo -e " ${YELLOW}Tag $TAG existiert bereits — überspringe${NC}"
else
git tag "$TAG"
echo -e " ${GREEN}${NC} Tag $TAG erstellt"
fi
git push origin "$TAG"
echo -e " ${GREEN}${NC} Tag gepusht"
echo ""
# ── Gitea Release erstellen ───────────────────
echo -e "${GREEN}[3/4] Gitea Release erstellen...${NC}"
RELEASE_RESPONSE=$(curl -s -X POST \
"$GITEA_URL/api/v1/repos/$GITEA_REPO/releases" \
-u "${GITEA_USER}:${GITEA_PASS}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"$TAG\",
\"name\": \"ARIA $TAG\",
\"body\": \"ARIA Android App $TAG\",
\"draft\": false,
\"prerelease\": false
}")
RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
if [ -z "$RELEASE_ID" ]; then
echo -e "${RED}Release konnte nicht erstellt werden:${NC}"
echo "$RELEASE_RESPONSE"
exit 1
fi
echo -e " ${GREEN}${NC} Release #$RELEASE_ID erstellt"
echo ""
# ── APK hochladen ─────────────────────────────
echo -e "${GREEN}[4/4] APK hochladen...${NC}"
UPLOAD_RESPONSE=$(curl -s -X POST \
"$GITEA_URL/api/v1/repos/$GITEA_REPO/releases/$RELEASE_ID/assets?name=$APK_NAME" \
-u "${GITEA_USER}:${GITEA_PASS}" \
-F "attachment=@${APK_PATH};type=application/vnd.android.package-archive")
if echo "$UPLOAD_RESPONSE" | grep -q '"name"'; then
echo -e " ${GREEN}${NC} $APK_NAME hochgeladen"
else
echo -e "${RED}Upload fehlgeschlagen:${NC}"
echo "$UPLOAD_RESPONSE"
exit 1
fi
# ── Fertig ────────────────────────────────────
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ Release $TAG ist live!$(printf '%*s' $((27 - ${#TAG})) '')${NC}"
echo -e "${GREEN}╠═══════════════════════════════════════════════════╣${NC}"
echo -e "${GREEN}${NC} $GITEA_URL/$GITEA_REPO/releases/tag/$TAG"
echo -e "${GREEN}${NC} APK: $APK_NAME ($APK_SIZE)"
echo -e "${GREEN}╚═══════════════════════════════════════════════════╝${NC}"