# Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/2.0/configuration-reference version: 2.1 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/2.0/configuration-reference/#jobs jobs: testbuild: working_directory: ~/repo # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor docker: - image: cimg/go:1.22.2 # Add steps to the job # See: https://circleci.com/docs/2.0/configuration-reference/#steps steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: name: Install Dependencies command: go mod download - save_cache: key: go-mod-v4-{{ checksum "go.sum" }} paths: - "/go/pkg/mod" - run: name: Run tests command: go test ./... - run: name: Run build command: go build ./... - store_test_results: path: /tmp/test-reports lint: docker: - image: golangci/golangci-lint:v2.6.2-alpine steps: - checkout - run: golangci-lint run test: docker: # We use golang:bookworm instead of golang:alpine because we want to run # tests with the race detector enabled. The race detector requires glibc, # which is only present in the Debian-based containers. - image: golang:1.25-bookworm working_directory: ~/repo steps: - checkout - run: go test -v -race ./... # Invoke jobs via workflows # See: https://circleci.com/docs/2.0/configuration-reference/#workflows workflows: testbuild: jobs: - testbuild - lint