name: CI on: push: branches: [main] pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.23' - name: Build run: go build ./... - name: Test run: go test ./... integration: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.23' - name: Install and Start NATS Server run: | # Detect architecture and download appropriate binary ARCH=$(uname -m) if [ "$ARCH" = "x86_64" ]; then NATS_ARCH="amd64" elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then NATS_ARCH="arm64" else echo "Unsupported architecture: $ARCH" exit 1 fi echo "Detected architecture: $ARCH, using NATS binary: $NATS_ARCH" # Download and extract nats-server curl -L "https://github.com/nats-io/nats-server/releases/download/v2.10.24/nats-server-v2.10.24-linux-${NATS_ARCH}.tar.gz" -o nats-server.tar.gz tar -xzf nats-server.tar.gz # Start NATS with JetStream ./nats-server-v2.10.24-linux-${NATS_ARCH}/nats-server -js -p 4222 & # Wait for NATS to be ready sleep 3 ./nats-server-v2.10.24-linux-${NATS_ARCH}/nats-server --version - name: Run Integration Tests run: go test -tags=integration -v ./...