60 lines
1.5 KiB
YAML
60 lines
1.5 KiB
YAML
version: 2.1
|
|
|
|
references:
|
|
images:
|
|
go: &GOLANG_IMAGE docker.mirror.hashicorp.services/circleci/golang:1.15.3
|
|
environments:
|
|
tmp: &TEST_RESULTS_PATH /tmp/test-results # path to where test results are saved
|
|
|
|
# reusable 'executor' object for jobs
|
|
executors:
|
|
go:
|
|
docker:
|
|
- image: *GOLANG_IMAGE
|
|
environment:
|
|
- TEST_RESULTS: *TEST_RESULTS_PATH
|
|
|
|
jobs:
|
|
go-test:
|
|
executor: go
|
|
steps:
|
|
- checkout
|
|
- run: mkdir -p $TEST_RESULTS
|
|
|
|
- restore_cache: # restore cache from dev-build job
|
|
keys:
|
|
- go-version-modcache-v1-{{ checksum "go.mod" }}
|
|
|
|
- run: go mod download
|
|
|
|
# Save go module cache if the go.mod file has changed
|
|
- save_cache:
|
|
key: go-version-modcache-v1-{{ checksum "go.mod" }}
|
|
paths:
|
|
- "/go/pkg/mod"
|
|
|
|
# check go fmt output because it does not report non-zero when there are fmt changes
|
|
- run:
|
|
name: check go fmt
|
|
command: |
|
|
files=$(go fmt ./...)
|
|
if [ -n "$files" ]; then
|
|
echo "The following file(s) do not conform to go fmt:"
|
|
echo "$files"
|
|
exit 1
|
|
fi
|
|
|
|
# run go tests with gotestsum
|
|
- run: |
|
|
PACKAGE_NAMES=$(go list ./...)
|
|
gotestsum --format=short-verbose --junitfile $TEST_RESULTS/gotestsum-report.xml -- $PACKAGE_NAMES
|
|
- store_test_results:
|
|
path: *TEST_RESULTS_PATH
|
|
- store_artifacts:
|
|
path: *TEST_RESULTS_PATH
|
|
|
|
workflows:
|
|
version: 2
|
|
test-and-build:
|
|
jobs:
|
|
- go-test
|