diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..488dae5 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,59 @@ +version: 2.1 + +references: +  images: +    go: &GOLANG_IMAGE circleci/golang:latest +  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-multierror-modcache-v1-{{ checksum "go.mod" }} + +      - run: go mod download + +      # Save go module cache if the go.mod file has changed +      - save_cache: +          key: go-multierror-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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 24b8038..0000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.x - -branches: - only: - - master - -script: env GO111MODULE=on make test testrace