version: 2.1 orbs: codecov: codecov/codecov@1.0.5 executors: exec_go_1_12: docker: - image: circleci/golang:1.12.16 exec_go_1_13: docker: - image: circleci/golang:1.13.8 exec_go_1_14: docker: - image: circleci/golang:1.14.0 commands: vet: description: "Run go vet" steps: - run: go vet ./... fmt: description: "Run go fmt" steps: - run: test -z "$(go fmt ./...)" lint: description: "Run golint" steps: - run: go get -u golang.org/x/lint/golint - run: golint ./... go_test: description: "Run go test" steps: - run: go test -v -race -coverprofile=coverage.txt -covermode=atomic coverage: description: "Report on code coverage" steps: - codecov/upload: file: "coverage.txt" godog: description: "Run godog" steps: - run: go install ./cmd/godog - run: godog -f progress all: description: "Run all commands against godog code" steps: - checkout - vet - fmt - lint - go_test - coverage - godog jobs: go1_12: working_directory: godog executor: exec_go_1_12 steps: - all go1_13: working_directory: godog executor: exec_go_1_13 steps: - all go1_14: working_directory: godog executor: exec_go_1_14 steps: - all workflows: version: 2 test: jobs: - go1_12 - go1_13 - go1_14