name: Tests on: [push, pull_request] jobs: test-linux: strategy: fail-fast: false matrix: target: - linux-amd64-unit-test-1-cpu - linux-amd64-unit-test-2-cpu - linux-amd64-unit-test-4-cpu - linux-amd64-unit-test-4-cpu-race runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: "1.17.13" - run: make fmt - env: TARGET: ${{ matrix.target }} run: | case "${TARGET}" in linux-amd64-unit-test-1-cpu) CPU=1 make test ;; linux-amd64-unit-test-2-cpu) CPU=2 make test ;; linux-amd64-unit-test-4-cpu) CPU=4 make test ;; linux-amd64-unit-test-4-cpu-race) # XXX: By default, the Github Action runner will terminate the process # if it has high resource usage. Try to use GOGC to limit memory and # cpu usage here to prevent unexpected terminating. It can be replaced # with GOMEMLIMIT=2048MiB if the go-version is updated to >=1.19.x. # # REF: https://github.com/actions/runner-images/issues/6680#issuecomment-1335778010 GOGC=30 CPU=4 ENABLE_RACE=true make test ;; *) echo "Failed to find target" exit 1 ;; esac - name: golangci-lint uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # v3.4.0 test-windows: strategy: fail-fast: false matrix: target: - windows-amd64-unit-test-4-cpu # FIXME(fuweid): # # The windows will throws the following error when enable race. # We skip it until we have solution. # # ThreadSanitizer failed to allocate 0x000200000000 (8589934592) bytes at 0x0400c0000000 (error code: 1455) # #- windows-amd64-unit-test-4-cpu-race runs-on: windows-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: "1.17.13" - run: make fmt - env: TARGET: ${{ matrix.target }} run: | case "${TARGET}" in windows-amd64-unit-test-4-cpu) CPU=4 make test ;; *) echo "Failed to find target" exit 1 ;; esac shell: bash - name: golangci-lint uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # v3.4.0 coverage: needs: ["test-linux", "test-windows"] strategy: matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: "1.17.13" - run: make coverage