#!/usr/bin/env bash # ============================================================================ # 上传双架构发布包到 Gitea Release: # make dist && GITEA_TOKEN=xxx bash scripts/upload-release.sh v2.0.1 # GITEA_TOKEN: 具备 repo 权限的 token(设置 → 应用 → 生成令牌) # ============================================================================ set -euo pipefail REPO="rlwj-lab/LokiStack" GITEA="https://gitea.91ai.io" VERSION="${1:?用法: GITEA_TOKEN=xxx bash scripts/upload-release.sh vX.Y.Z}" TOKEN="${GITEA_TOKEN:?请设置 GITEA_TOKEN}" for f in dist/lokistack-linux-amd64.tar.gz dist/lokistack-linux-arm64.tar.gz; do [ -f "$f" ] || { echo "缺少 $f,先执行 make dist"; exit 1; } done # 已存在则复用,不存在则创建 REL_ID="$(curl -fsSL -H "Authorization: token $TOKEN" "$GITEA/api/v1/repos/$REPO/releases/tags/$VERSION" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2 || true)" if [ -z "$REL_ID" ]; then echo "==> 创建 Release $VERSION" REL_ID="$(curl -fsSL -X POST -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"$VERSION\",\"name\":\"LokiStack $VERSION\"}" \ "$GITEA/api/v1/repos/$REPO/releases" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)" fi [ -n "$REL_ID" ] || { echo "Release 创建/获取失败"; exit 1; } for f in dist/lokistack-linux-*.tar.gz; do echo "==> 上传 $f" curl -fsSL -X POST -H "Authorization: token $TOKEN" \ -F "attachment=@$f" \ "$GITEA/api/v1/repos/$REPO/releases/$REL_ID/assets?name=$(basename "$f")" >/dev/null done echo "==> 完成: $GITEA/$REPO/releases/tag/$VERSION"