name: Go on: push: branches: [ master ] pull_request: branches: [ master ] jobs: test-linux: name: Linux runs-on: ubuntu-latest steps: - name: Check out code into the Go module directory uses: actions/checkout@v4 - name: Set up Go 1.x uses: actions/setup-go@v4 with: go-version: 1.19 check-latest: true cache: true id: go - name: Get dependencies run: | go get -v -t -d ./... - name: Lint run: | go vet -stdmethods=false $(go list ./...) go mod tidy if ! test -z "$(git status --porcelain)"; then echo "Please run 'go mod tidy'" exit 1 fi - name: Test run: go test -race -coverprofile=coverage.txt -covermode=atomic ./... - name: Codecov uses: codecov/codecov-action@v3 test-win: name: Windows runs-on: windows-latest steps: - name: Checkout codebase uses: actions/checkout@v4 - name: Set up Go 1.x uses: actions/setup-go@v4 with: # use 1.19 to guarantee Go 1.19 compatibility go-version: 1.19 check-latest: true cache: true - name: Test run: | go mod verify go mod download go test ./... cd tools/goctl && go build -v goctl.go