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", "1.24", "1.25"] steps: - name: Checkout uses: actions/checkout@v6 - name: Setup Go uses: actions/setup-go@v6 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: Install tparse run: | mkdir -p $HOME/.local/bin curl -L -o $HOME/.local/bin/tparse https://github.com/mfridman/tparse/releases/latest/download/tparse_linux_x86_64 chmod +x $HOME/.local/bin/tparse echo "$HOME/.local/bin" >> "$GITHUB_PATH" - name: Build run: | 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@v6 - name: Setup Go uses: actions/setup-go@v6 - name: Coverage run: | go test -v -covermode=count -coverprofile=coverage.cov ./... - name: Coveralls uses: coverallsapp/github-action@v2 with: file: coverage.cov format: golang