version: 2.1 executors: go1_15: docker: - image: cimg/go:1.15 environment: GO111MODULE: "on" go1_16: docker: - image: cimg/go:1.16 environment: GO111MODULE: "on" go1_17: docker: - image: cimg/go:1.17 commands: gomod: steps: - restore_cache: keys: [deps-] - run: name: Download go module dependencies command: go mod download - save_cache: key: deps-{{ checksum "go.sum" }}-{{ checksum "go.sum" }} paths: [/home/circleci/go/pkg/mod] jobs: lint: working_directory: /home/circleci/go/src/github.com/nspcc-dev/neo-go executor: go1_17 steps: - checkout - gomod - run: name: go-lint command: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.42.1 make lint test_1_15: working_directory: /home/circleci/go/src/github.com/nspcc-dev/neo-go executor: go1_15 steps: - checkout - run: git submodule sync - run: git submodule update --init - gomod - run: go test -v -race ./... test_1_16: working_directory: /home/circleci/go/src/github.com/nspcc-dev/neo-go executor: go1_16 steps: - checkout - run: git submodule sync - run: git submodule update --init - gomod - run: go test -v -race ./... build_cli: working_directory: /home/circleci/go/src/github.com/nspcc-dev/neo-go executor: go1_17 steps: - checkout - gomod - run: make build - store_artifacts: path: bin destination: / build_image: working_directory: /home/circleci/go/src/github.com/nspcc-dev/neo-go executor: go1_17 docker: - image: golang:1-alpine steps: - run: apk update && apk add git make curl tar - checkout - gomod - setup_remote_docker: version: 20.10.6 - run: name: Install Docker client command: | set -x VER="20.10.6" curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz tar -xz -C /tmp -f /tmp/docker-$VER.tgz mv /tmp/docker/* /usr/bin - run: make image workflows: version: 2 workflow: jobs: - lint: filters: tags: only: v/[0-9]+\.[0-9]+\.[0-9]+/ - test_1_15: filters: tags: only: v/[0-9]+\.[0-9]+\.[0-9]+/ - test_1_16: filters: tags: only: v/[0-9]+\.[0-9]+\.[0-9]+/ - build_cli: filters: tags: only: v/[0-9]+\.[0-9]+\.[0-9]+/ - build_image: requires: - build_cli filters: tags: only: v/[0-9]+\.[0-9]+\.[0-9]+/