# Continuous integration — runs on every push to main and every PR. # Catches regressions early so the Release workflow on tag push doesn't # surprise us with a red test run when we least want it. name: CI on: push: branches: [ main, 'v2-*' ] pull_request: branches: [ main ] permissions: contents: read jobs: test: name: Test & vet runs-on: ubuntu-latest strategy: matrix: go-version: [ '1.21' ] steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Go ${{ matrix.go-version }} uses: actions/setup-go@v5 with: go-version: ${{ matrix.go-version }} - name: Cache Go modules uses: actions/cache@v4 with: path: | ~/.cache/go-build ~/go/pkg/mod key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }} - name: Verify modules run: go mod verify - name: Build run: go build ./... - name: Vet run: go vet ./... - name: Test (race detector) run: go test ./... -race -timeout 180s