name: build on: pull_request: types: [opened, synchronize] push: branches: [main] jobs: tests: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - macos-latest - ubuntu-latest - windows-latest steps: - name: Checkout repository and submodules uses: actions/checkout@v3 - name: Unshallow run: git fetch --prune --unshallow - name: Setup Go uses: actions/setup-go@v3 with: go-version: 1.18.8 cache: true - name: Set go env run: | echo "GOPATH=$(go env GOPATH)" >> $GITHUB_ENV echo "$(go env GOPATH)/bin" >> $GITHUB_PATH go install gotest.tools/gotestsum@latest go install honnef.co/go/tools/cmd/staticcheck@latest - name: Pull external libraries run: make vendor - name: Run tests run: make test fmt: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Go uses: actions/setup-go@v3 with: # Use 1.19 because of godoc formatting. # See https://tip.golang.org/doc/go1.19#go-doc. go-version: 1.19 # No need to download cached dependencies when running gofmt. cache: false - name: Run gofmt run: | # -l: list files that were reformatted # -w: write back formatted files to disk gofmt -l -w ./ - name: Run go mod tidy run: | go mod tidy - name: Fail on differences run: | # Exit with status code 1 if there are differences (i.e. unformatted files) git diff --exit-code