name: Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: - linux-amd64-fmt - linux-amd64-integration-1-cpu - linux-amd64-integration-2-cpu - linux-amd64-integration-4-cpu - linux-amd64-functional - linux-amd64-unit-4-cpu-race - all-build - linux-amd64-grpcproxy - linux-386-unit steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: go-version: "1.16.15" - run: date - env: TARGET: ${{ matrix.target }} run: | go version echo ${GOROOT} # The version of ${GOROOT} is 1.16.15, while the `/usr/bin/go` links to go1.17.11. # We need to make sure they are linking to the same go version; otherwise, we will # run into issue: "compile: version go1.16.15 does not match go tool version go1.17.11". # Refer to https://github.com/actions/setup-go/issues/107 as well. sudo unlink /usr/bin/go; sudo ln -s ${GOROOT}/bin/go /usr/bin/go; ls -lrt /usr/bin/go echo "${TARGET}" case "${TARGET}" in linux-amd64-fmt) GOARCH=amd64 PASSES='fmt bom dep' ./test ;; linux-amd64-integration-1-cpu) GOARCH=amd64 CPU=1 PASSES='integration' RACE='false' ./test ;; linux-amd64-integration-2-cpu) GOARCH=amd64 CPU=2 PASSES='integration' RACE='false' ./test ;; linux-amd64-integration-4-cpu) GOARCH=amd64 CPU=4 PASSES='integration' RACE='false' ./test ;; linux-amd64-functional) ./build && GOARCH=amd64 PASSES='functional' ./test ;; linux-amd64-unit-4-cpu-race) GOARCH=amd64 PASSES='unit' RACE='true' CPU='4' ./test -p=2 ;; all-build) GOARCH=amd64 PASSES='build' ./test GOARCH=386 PASSES='build' ./test GO_BUILD_FLAGS='-v' GOOS=darwin GOARCH=amd64 ./build GO_BUILD_FLAGS='-v' GOOS=windows GOARCH=amd64 ./build GO_BUILD_FLAGS='-v' GOARCH=arm ./build GO_BUILD_FLAGS='-v' GOARCH=arm64 ./build GO_BUILD_FLAGS='-v' GOARCH=ppc64le ./build GO_BUILD_FLAGS='-v' GOARCH=s390x ./build ;; linux-amd64-grpcproxy) PASSES='build grpcproxy' CPU='4' RACE='true' ./test 2>&1 | tee test.log ! egrep "(--- FAIL:|DATA RACE|panic: test timed out|appears to have leaked)" -B50 -A10 test.log ;; linux-386-unit) GOARCH=386 PASSES='unit' ./test ;; *) echo "Failed to find target" exit 1 ;; esac