# This workflow runs on Gitea Actions, which is API-compatible with GitHub Actions. # It performs CI on every push to main and every pull request, and automatically # builds and attaches a Linux amd64 release binary when a version tag (v*) is pushed. # # Go is installed manually from a Chinese mirror (NJU) instead of using # actions/setup-go, because the runner is in a region where the official Go # download endpoint is slow. GOPROXY is set to goproxy.cn for the same reason. name: CI / Release on: push: branches: - main tags: - 'v*' pull_request: jobs: ci: name: CI runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Go (Mirror in China) run: | if [ ! -d "/usr/local/go" ]; then wget https://mirrors.nju.edu.cn/golang/go1.25.5.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.25.5.linux-amd64.tar.gz rm go1.25.5.linux-amd64.tar.gz fi echo "/usr/local/go/bin" >> $GITHUB_PATH echo "GOPROXY=https://goproxy.cn,direct" >> $GITHUB_ENV - name: Build run: go build ./... - name: Vet run: go vet ./... - name: Test run: go test ./... - name: Check formatting run: | if [ -n "$(gofmt -l .)" ]; then gofmt -l . exit 1 fi release: name: Release needs: ci if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Go (Mirror in China) run: | if [ ! -d "/usr/local/go" ]; then wget https://mirrors.nju.edu.cn/golang/go1.25.5.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.25.5.linux-amd64.tar.gz rm go1.25.5.linux-amd64.tar.gz fi echo "/usr/local/go/bin" >> $GITHUB_PATH echo "GOPROXY=https://goproxy.cn,direct" >> $GITHUB_ENV - name: Build release binary run: GOOS=linux GOARCH=amd64 go build -o spark-mcp-linux-amd64 ./main.go - name: Upload release asset uses: softprops/action-gh-release@v2 with: files: spark-mcp-linux-amd64 generate_release_notes: true