CircleCI vs. TravisCI for gorilla/mux - comparing maintainability, verbosity, DRY, etc. Ref: https://twitter.com/elithrar/status/1140342082768261120 & https://blog.questionable.services/article/building-go-projects-on-circle-ci/
language: go | |
matrix: | |
include: | |
- go: 1.7.x | |
- go: 1.8.x | |
- go: 1.9.x | |
- go: 1.10.x | |
- go: 1.11.x | |
- go: 1.x | |
env: LATEST=true | |
- go: tip | |
allow_failures: | |
- go: tip | |
install: | |
- # Skip | |
script: | |
- go get -t -v ./... | |
- diff -u <(echo -n) <(gofmt -d .) | |
- if [[ "$LATEST" = true ]]; then go vet .; fi | |
- go test -v -race ./... |
version: 2.1 | |
jobs: | |
"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:<< parameters.version >>" | |
working_directory: /go/src/github.com/gorilla/mux | |
environment: | |
GO111MODULE: "on" | |
GOPROXY: "<< parameters.goproxy >>" | |
steps: | |
- checkout | |
- run: | |
name: "Print the Go version" | |
command: > | |
go version | |
- run: | |
name: "Fetch dependencies" | |
command: > | |
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 [ << parameters.version >> = "latest" ] && [ << parameters.golint >> = true ]; then | |
go get -u golang.org/x/lint/golint | |
golint ./... | |
fi | |
- run: | |
name: "Run gofmt" | |
command: > | |
if [[ << parameters.version >> = "latest" ]]; then | |
diff -u <(echo -n) <(gofmt -d -e .) | |
fi | |
- run: | |
name: "Run go vet" | |
command: > | |
if [[ << parameters.version >> = "latest" ]]; then | |
go vet -v ./... | |
fi | |
- run: | |
name: "Run go test (+ race detector)" | |
command: > | |
go test -v -race ./... | |
workflows: | |
tests: | |
jobs: | |
- test: | |
matrix: | |
parameters: | |
version: ["latest", "1.15", "1.14", "1.13", "1.12", "1.11"] |
This comment has been minimized.
This comment has been minimized.
Updated to use version: 2.1
jobs:
"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:<< parameters.version >>"
working_directory: /go/src/github.com/gorilla/mux
environment:
GO111MODULE: "on"
GOPROXY: "<< parameters.goproxy >>"
steps:
- checkout
- run:
name: "Print the Go version"
command: >
go version
- run:
name: "Fetch dependencies"
command: >
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 [ << parameters.version >> = "latest" ] && [ << parameters.golint >> = true ]; then
go get -u golang.org/x/lint/golint
golint ./...
fi
- run:
name: "Run gofmt"
command: >
if [[ << parameters.version >> = "latest" ]]; then
diff -u <(echo -n) <(gofmt -d -e .)
fi
- run:
name: "Run go vet"
command: >
if [[ << parameters.version >> = "latest" ]]; then
go vet -v ./...
fi
- run:
name: "Run go test (+ race detector)"
command: >
go test -v -race ./...
workflows:
tests:
jobs:
- test:
matrix:
parameters:
version: ["latest", "1.15", "1.14", "1.13", "1.12", "1.11"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
A variant that uses Parameters in v2.1 to re-use more code.