From d07530f46e1eec4e40346e24af34dcc6750ad39f Mon Sep 17 00:00:00 2001 From: Matt Silverlock Date: Sat, 12 Sep 2020 12:20:56 -0700 Subject: [PATCH] build: CircleCI 2.1 + build matrix (#595) * build: CircleCI 2.1 + build matrix * build: drop Go 1.9 & Go 1.10 * build: remove erroneous version --- .circleci/config.yml | 103 ++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 60 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 536bc11..ead3e1d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,87 +1,70 @@ -version: 2.0 +version: 2.1 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 + "test": + parameters: + version: + type: string + default: "latest" + golint: + type: boolean + default: true + modules: + type: boolean + default: true + goproxy: + type: string + default: "" docker: - - image: circleci/golang:latest + - image: "circleci/golang:<< parameters.version >>" 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. + environment: + GO111MODULE: "on" + GOPROXY: "<< parameters.goproxy >>" + steps: - checkout - # Logs the version in our build logs, for posterity - - run: go version + - run: + name: "Print the Go version" + command: > + go version - run: name: "Fetch dependencies" command: > - go get -t -v ./... + if [[ << parameters.modules >> = true ]]; then + go mod download + export GO111MODULE=on + else + go get -v ./... + fi # Only run gofmt, vet & lint against the latest Go version - run: name: "Run golint" command: > - if [ "${LATEST}" = true ] && [ -z "${SKIP_GOLINT}" ]; then + if [ << parameters.version >> = "latest" ] && [ << parameters.golint >> = true ]; then go get -u golang.org/x/lint/golint golint ./... fi - run: name: "Run gofmt" command: > - if [[ "${LATEST}" = true ]]; then + if [[ << parameters.version >> = "latest" ]]; then diff -u <(echo -n) <(gofmt -d -e .) fi - run: name: "Run go vet" - command: > - if [[ "${LATEST}" = true ]]; then + command: > + if [[ << parameters.version >> = "latest" ]]; 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 + - run: + name: "Run go test (+ race detector)" + command: > + go test -v -race ./... workflows: - version: 2 - build: + tests: jobs: - - "latest" - - "1.12" - - "1.11" - - "1.10" - - "1.9" - - "1.8" - - "1.7" + - test: + matrix: + parameters: + version: ["latest", "1.15", "1.14", "1.13", "1.12", "1.11"]