name: build on: push: branches: - main pull_request: types: [opened, synchronize, reopened] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: go: ["1.21", "1.22", "1.23"] steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: "${{ matrix.go }}" check-latest: true - name: Check Go code formatting run: | if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then gofmt -s -l . echo "Please format Go code by running: go fmt ./..." exit 1 fi - name: Build run: | go install github.com/mfridman/tparse@latest go vet ./... go test -v -race -count=1 -json -cover ./... | tee output.json | tparse -follow -notests || true tparse -format markdown -file output.json -all > $GITHUB_STEP_SUMMARY go build ./... coverage: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 - name: Coverage run: | go test -v -covermode=count -coverprofile=coverage.cov ./... - name: Coveralls uses: coverallsapp/github-action@v2 with: file: coverage.cov format: golang