diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 3586490..28e9c73 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -7,38 +7,55 @@ on: jobs: build: - runs-on: ubuntu + runs-on: ubuntu-latest + container: + image: golang:1.26-alpine + env: + GOPROXY: "https://mirrors.aliyun.com/goproxy/,direct" steps: - - name: Checkout code - run: apt-get update && apt-get install -y git curl go + - name: Checkout + run: | + apk add git bash + git clone https://hub.gaomia.site/titor/HxClaw.git /workspace/hxclaw + cp -r /workspace/hxclaw/* /workspace/hxclaw/ + cp -r /workspace/hxclaw/.* /workspace/hxclaw/ 2>/dev/null || true - name: Download dependencies run: go mod download - name: Build run: | - mkdir -p dist - GOOS=linux GOARCH=amd64 go build -o dist/hxclaw-linux-amd64 ./cmd/hxclaw - GOOS=linux GOARCH=arm64 go build -o dist/hxclaw-linux-arm64 ./cmd/hxclaw - GOOS=darwin GOARCH=amd64 go build -o dist/hxclaw-darwin-amd64 ./cmd/hxclaw - GOOS=darwin GOARCH=arm64 go build -o dist/hxclaw-darwin-arm64 ./cmd/hxclaw - GOOS=windows GOARCH=amd64 go build -o dist/hxclaw-windows-amd64.exe ./cmd/hxclaw + cd /workspace/hxclaw + for p in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64; do + os=${p%/*} + arch=${p#*/} + ext="" + [ "$os" = "windows" ] && ext=".exe" + GOOS=$os GOARCH=$arch go build -o "hxclaw-${os}-${arch}${ext}" ./cmd/hxclaw + done - - name: Checksum - run: cd dist && sha256sum hxclaw-* > checksums.txt + - name: Checksums + run: sha256sum hxclaw-* > checksums.txt - - name: Create release + - name: Release + env: + GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }} run: | - TAG_NAME="${GITEA_REF#refs/tags/}" - curl -s -X POST "https://hub.gaomia.site/api/v1/repos/titor/hxclaw/releases" \ - -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ + apk add curl jq + + TAG_NAME="${GITHUB_REF#refs/tags/}" + + RELEASE_BODY=$(git tag -l --format='%(contents)' "$TAG_NAME" 2>/dev/null || git log -1 --format="%s%n%n%b" "$TAG_NAME" 2>/dev/null || echo "Release $TAG_NAME") + + RELEASE_RESPONSE=$(curl -s -X POST "https://hub.gaomia.site/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 $TAG_NAME\"}" + -d "{\"tag_name\":\"${TAG_NAME}\",\"name\":\"${TAG_NAME}\",\"body\":\"${RELEASE_BODY}\"}") - - name: Upload - run: | - for f in dist/hxclaw-* dist/checksums.txt; do - curl -s -X POST "https://hub.gaomia.site/api/v1/repos/titor/hxclaw/releases/latest/assets" \ - -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ + RELEASE_ID=$(echo "$RELEASE_RESPONSE" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2) + + for f in hxclaw-* checksums.txt; do + [ -f "$f" ] && curl -s -X POST "https://hub.gaomia.site/api/v1/repos/titor/hxclaw/releases/${RELEASE_ID}/assets" \ + -H "Authorization: token ${GITEA_TOKEN}" \ -F "attachment=@$f" done \ No newline at end of file