github.com/night-codes/go-json@v0.9.15/.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@v2
    14      - name: build
    15        run: docker-compose run go-json
    16    test:
    17      name: Test
    18      strategy:
    19        matrix:
    20          os: [ "ubuntu-latest", "macos-latest", "windows-latest" ]
    21          go-version: [ "1.16", "1.17", "1.18" ]
    22      runs-on: ${{ matrix.os }}
    23      steps:
    24      - name: setup Go ${{ matrix.go-version }}
    25        uses: actions/setup-go@v2
    26        with:
    27          go-version: ${{ matrix.go-version }}
    28      - name: checkout
    29        uses: actions/checkout@v2
    30      - name: simple test
    31        run: go test -v ./... -count=1
    32      - name: test with GC pressure
    33        run: go test -v ./... -count=1
    34        env:
    35          GOGC: 1
    36      - name: test with race detector
    37        run: go test -v -race ./... -count=1
    38    bench:
    39      name: Benchmark
    40      runs-on: ubuntu-latest
    41      steps:
    42        - name: setup Go
    43          uses: actions/setup-go@v2
    44          with:
    45            go-version: 1.18
    46        - name: checkout ( feature )
    47          uses: actions/checkout@v2
    48        - name: run benchmark ( feature )
    49          run: cd benchmarks && go test -bench GoJson | tee $HOME/new.txt
    50        - name: install benchstat
    51          run: go install golang.org/x/perf/cmd/benchstat@latest
    52        - name: checkout ( master )
    53          uses: actions/checkout@v2
    54          with:
    55            ref: master
    56        - name: run benchmark ( master )
    57          run: cd benchmarks && go test -bench GoJson | tee $HOME/old.txt
    58        - name: compare benchmark results
    59          run: benchstat $HOME/old.txt $HOME/new.txt
    60    coverage:
    61      name: Coverage
    62      runs-on: ubuntu-latest
    63      steps:
    64        - name: setup Go
    65          uses: actions/setup-go@v2
    66          with:
    67            go-version: 1.18
    68        - name: checkout
    69          uses: actions/checkout@v2
    70        - name: measure coverage
    71          run: make cover
    72        - uses: codecov/codecov-action@v2
    73          with:
    74            fail_ci_if_error: true
    75            verbose: true