version: 2.0 jobs: # Base test configuration for Go library tests Each distinct version should # inherit this base, and override (at least) the container image used. "test": &test docker: - image: circleci/golang:latest working_directory: /go/src/github.com/gorilla/mux steps: &steps # Our build steps: we checkout the repo, fetch our deps, lint, and finally # run "go test" on the package. - checkout # Logs the version in our build logs, for posterity - run: go version - run: name: "Fetch dependencies" command: > go get -t -v ./... # Only run gofmt, vet & lint against the latest Go version - run: name: "Run golint" command: > if [ "${LATEST}" = true ] && [ -z "${SKIP_GOLINT}" ]; then go get -u golang.org/x/lint/golint golint ./... fi - run: name: "Run gofmt" command: > if [[ "${LATEST}" = true ]]; then diff -u <(echo -n) <(gofmt -d -e .) fi - run: name: "Run go vet" command: > if [[ "${LATEST}" = true ]]; then go vet -v ./... fi - run: go test -v -race ./... "latest": <<: *test environment: LATEST: true "1.12": <<: *test docker: - image: circleci/golang:1.12 "1.11": <<: *test docker: - image: circleci/golang:1.11 "1.10": <<: *test docker: - image: circleci/golang:1.10 "1.9": <<: *test docker: - image: circleci/golang:1.9 "1.8": <<: *test docker: - image: circleci/golang:1.8 "1.7": <<: *test docker: - image: circleci/golang:1.7 workflows: version: 2 build: jobs: - "latest" - "1.12" - "1.11" - "1.10" - "1.9" - "1.8" - "1.7"