name: Release on: push: tags: - 'v*' env: GOPROXY: "https://mirrors.aliyun.com/goproxy/,direct" GITEA_URL: "https://hub.gaomia.site" jobs: build: runs-on: debian steps: - name: Checkout code run: | apt-get update && apt-get install -y git curl go - name: Download dependencies run: go mod download - name: Build for all platforms run: | mkdir -p dist platforms=( "linux/amd64" "linux/arm64" "darwin/amd64" "darwin/arm64" "windows/amd64" ) for p in "${platforms[@]}"; do os="${p%/*}" arch="${p#*/}" ext="" [ "$os" = "windows" ] && ext=".exe" output="dist/hxclaw-${os}-${arch}${ext}" GOOS=$os GOARCH=$arch go build -o "$output" ./cmd/hxclaw echo "Built: $output" done - name: Generate checksums run: | cd dist sha256sum hxclaw-* > checksums.txt cat checksums.txt - name: Create release and upload assets run: | TAG_NAME="${GITEA_REF#refs/tags/}" RELEASE_BODY=$(git log --format="%s%n%b" "$TAG_NAME" -1 2>/dev/null || echo "Release $TAG_NAME") echo "Creating release: $TAG_NAME" RELEASE_RESPONSE=$(curl -s -X POST "$GITEA_URL/api/v1/repos/titor/hxclaw/releases" \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"$TAG_NAME\",\"name\":\"$TAG_NAME\",\"body\":\"$RELEASE_BODY\"}") RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) echo "Release ID: $RELEASE_ID" for f in dist/hxclaw-* dist/checksums.txt; do [ -f "$f" ] && curl -s -X POST "$GITEA_URL/api/v1/repos/titor/hxclaw/releases/${RELEASE_ID}/assets" \ -H "Authorization: token $GITEA_TOKEN" -F "attachment=@$f" done echo "Release completed!"