# CircleCI 2.0 configuration file # Check https://circleci.com/docs/2.0/language-go/ for more details version: 2 jobs: lint: docker: - image: cimg/go:1.20.0 steps: # Don't do a restore_cache here, so we regularly check that the Go # modules are actually fetchable. - checkout - run: go version - run: test -z "$(gofmt -l . | tee /dev/stderr)" - run: go vet ./... resource_class: large cross_compile: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: go get -v -t -d ./... - save_cache: key: go-mod-v4-{{ checksum "go.sum" }} paths: - "/home/circleci/go/pkg/mod" - run: sudo apt-get update - run: sudo apt-get install musl-dev musl-tools - run: sudo apt-get install gcc-arm-linux-gnueabi - run: sudo apt-get install gcc-aarch64-linux-gnu - run: sudo apt-get install gcc-riscv64-linux-gn - run: sudo apt-get install gcc-powerpc64le-linux-gnu - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 CC: musl-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: arm CC: arm-linux-gnueabi-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: arm64 CC: aarch64-linux-gnu-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: riscv64 CC: riscv64-linux-gnu-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: ppc64le CC: powerpc64le-linux-gnu-gcc cross_compile_mips: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: go get -v -t -d ./... - save_cache: key: go-mod-v4-{{ checksum "go.sum" }} paths: - "/home/circleci/go/pkg/mod" - run: sudo apt-get update - run: sudo apt-get install gcc-mips-linux-gnu - run: sudo apt-get install gcc-mipsel-linux-gnu - run: sudo apt-get install gcc-mips64-linux-gnuabi64 - run: sudo apt-get install gcc-mips64el-linux-gnuabi64 - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: mips CC: mips-linux-gnu-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: mipsle CC: mipsel-linux-gnu-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: mips64 CC: mips64-linux-gnuabi64-gcc - run: command: go install -a -tags sqlite_omit_load_extension -ldflags="-s" ./... environment: CGO_ENABLED: 1 GOARCH: mips64le CC: mips64el-linux-gnuabi64-gcc test: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: go get -v -t -d ./... - save_cache: key: go-mod-v4-{{ checksum "go.sum" }} paths: - "/home/circleci/go/pkg/mod" - run: go test -failfast ./... resource_class: large race_odd: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: go get -t -d ./... - run: command: go test -failfast -timeout 20m -race $(go list ./... | sed -n 'n;p') environment: GORACE: "halt_on_error=1" race_even: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: go get -t -d ./... - run: command: go test -failfast -timeout 20m -race $(go list ./... | sed -n 'p;n') environment: GORACE: "halt_on_error=1" end_to_end_single: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/single_node.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large end_to_end_joining: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/joining.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large end_to_end_multi: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/multi_node.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large end_to_end_multi_adv: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/multi_node_adv.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large end_to_end_autoclustering: docker: - image: cimg/go:1.20.0 - image: consul - image: gcr.io/etcd-development/etcd:v3.5.1 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/auto_clustering.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large end_to_end_auto_state: docker: - image: cimg/go:1.20.0 steps: - checkout - restore_cache: keys: - go-mod-v4-{{ checksum "go.sum" }} - run: sudo apt-get update - run: sudo apt-get install python3 - run: sudo apt install python3-pip - run: python3 -m pip install requests boto3 - run: go version - run: go get -t -d -v ./... - run: go install -tags osusergo,netgo,sqlite_omit_load_extension -ldflags="-extldflags=-static" ./... - run: command: python3 system_test/e2e/auto_state.py environment: RQLITED_PATH: /home/circleci/go/bin/rqlited resource_class: large workflows: version: 2 build_and_test: jobs: - lint - cross_compile - cross_compile_mips - test - race_even - race_odd - end_to_end_single - end_to_end_multi - end_to_end_multi_adv - end_to_end_joining - end_to_end_autoclustering - end_to_end_auto_state