name: CI on: pull_request: branches: [master] jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: go.mod - name: Build run: go build ./... - name: Vet run: go vet ./... - name: Format check run: | unformatted=$(gofmt -l $(go list -f '{{.Dir}}' ./...)) if [ -n "$unformatted" ]; then echo "These files need gofmt:" echo "$unformatted" exit 1 fi - name: Lint if: ${{ !env.ACT }} uses: golangci/golangci-lint-action@v7 with: version: v2.4.0 - name: Install tparse run: go install github.com/mfridman/tparse@v0.18.0 - name: Test (race detector) run: | set +e go tool gotestsum \ --format pkgname \ --format-icons hivis \ --hide-summary=skipped,output,errors,failed \ --jsonfile test-output.json \ --junitfile test-report.xml \ --packages="./..." \ -- -count=1 -race -covermode=atomic -coverprofile=coverage.out rc=$? echo tparse -all -notests -slow 10 -file=test-output.json || true exit $rc - name: Upload test report if: always() uses: actions/upload-artifact@v4 with: name: test-report path: | test-output.json test-report.xml coverage.out