github.com/goccy/go-json@v0.10.3-0.20240509105655-5e2ae3f23c1d/.github/workflows/go.yml (about) 1 name: Go 2 on: 3 push: 4 branches: 5 - master 6 pull_request: 7 jobs: 8 build: 9 name: Build on limited environment 10 runs-on: ubuntu-latest 11 steps: 12 - name: checkout 13 uses: actions/checkout@v3 14 - name: build 15 run: docker-compose run go-json 16 17 test: 18 name: Test 19 strategy: 20 matrix: 21 os: [ "ubuntu-latest", "macos-latest", "windows-latest" ] 22 go-version: [ "1.19", "1.20", "1.21" ] 23 runs-on: ${{ matrix.os }} 24 steps: 25 - name: setup Go ${{ matrix.go-version }} 26 uses: actions/setup-go@v3 27 with: 28 go-version: ${{ matrix.go-version }} 29 - name: checkout 30 uses: actions/checkout@v3 31 - name: simple test 32 run: go test -v ./... -count=1 33 - name: test with GC pressure 34 run: go test -v ./... -count=1 35 env: 36 GOGC: 1 37 - name: test with race detector 38 run: go test -v -race ./... -count=1 39 40 lint: 41 name: Lint 42 runs-on: ubuntu-latest 43 steps: 44 - name: checkout 45 uses: actions/checkout@v3 46 - name: setup Go 47 uses: actions/setup-go@v3 48 with: 49 go-version: '1.21' 50 - name: lint 51 run: | 52 make lint 53 bench: 54 name: Benchmark 55 runs-on: ubuntu-latest 56 steps: 57 - name: setup Go 58 uses: actions/setup-go@v3 59 with: 60 go-version: '1.21' 61 - name: checkout ( feature ) 62 uses: actions/checkout@v3 63 - name: run benchmark ( feature ) 64 run: cd benchmarks && go test -bench GoJson | tee $HOME/new.txt 65 - name: install benchstat 66 run: go install golang.org/x/perf/cmd/benchstat@latest 67 - name: checkout ( master ) 68 uses: actions/checkout@v3 69 with: 70 ref: master 71 - name: run benchmark ( master ) 72 run: cd benchmarks && go test -bench GoJson | tee $HOME/old.txt 73 - name: compare benchmark results 74 run: benchstat $HOME/old.txt $HOME/new.txt 75 76 coverage: 77 name: Coverage 78 runs-on: ubuntu-latest 79 steps: 80 - name: checkout 81 uses: actions/checkout@v3 82 - name: setup Go 83 uses: actions/setup-go@v3 84 with: 85 go-version: '1.21' 86 - name: measure coverage 87 run: make cover 88 - uses: codecov/codecov-action@v4 89 with: 90 fail_ci_if_error: true 91 verbose: true 92 token: ${{ secrets.CODECOV_TOKEN }}