name: Test on: [push, pull_request] jobs: format: name: Format (gofmt) runs-on: ubuntu-latest steps: - uses: actions/checkout@main - uses: actions/setup-go@main with: go-version: '1.15' - name: Run gofmt run: test -z $(gofmt -l .) || (gofmt -d . && exit 1) lint: name: Lint (golangci-lint) runs-on: ubuntu-latest needs: [format] steps: - uses: actions/checkout@main - uses: actions/setup-go@main with: go-version: '1.15' - name: Run golangci-lint run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.35.2 golangci-lint run -v ./... test: name: Test (go test) runs-on: ubuntu-latest needs: [lint] steps: - uses: actions/checkout@main - uses: actions/setup-go@main with: go-version: '1.15' - name: Run go test run: go test -race -coverprofile=coverage.txt ./... - name: Upload coverage to codecov.io if: github.event_name == 'push' uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.txt fail_ci_if_error: true build-cli: name: Build CLI (go build) runs-on: ubuntu-latest needs: [lint] steps: - uses: actions/checkout@main - uses: actions/setup-go@main with: go-version: '1.15' - name: Run go build run: | go build ./cli/battlesnake ./battlesnake --help