version: 2 defaults: &defaults working_directory: /go/src/github.com/tendermint/tendermint docker: - image: circleci/golang:1.12.0 environment: GOBIN: /tmp/workspace/bin docs_update_config: &docs_update_config working_directory: ~/repo docker: - image: tendermint/docs_deployment environment: AWS_REGION: us-east-1 jobs: setup_dependencies: <<: *defaults steps: - run: mkdir -p /tmp/workspace/bin - run: mkdir -p /tmp/workspace/profiles - checkout - restore_cache: keys: - v3-pkg-cache - run: name: tools command: | export PATH="$GOBIN:$PATH" make get_tools - run: name: dependencies command: | export PATH="$GOBIN:$PATH" make get_vendor_deps - run: name: binaries command: | export PATH="$GOBIN:$PATH" make install install_abci - persist_to_workspace: root: /tmp/workspace paths: - bin - profiles - save_cache: key: v3-pkg-cache paths: - /go/pkg - save_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} paths: - /go/src/github.com/tendermint/tendermint build_slate: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: slate docs command: | set -ex export PATH="$GOBIN:$PATH" make build-slate lint: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: metalinter command: | set -ex export PATH="$GOBIN:$PATH" make lint - run: name: check_dep command: | set -ex export PATH="$GOBIN:$PATH" make check_dep test_abci_apps: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: Run abci apps tests command: | export PATH="$GOBIN:$PATH" bash abci/tests/test_app/test.sh # if this test fails, fix it and update the docs at: # https://github.com/tendermint/tendermint/blob/develop/docs/abci-cli.md test_abci_cli: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: Run abci-cli tests command: | export PATH="$GOBIN:$PATH" bash abci/tests/test_cli/test.sh test_apps: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: sudo apt-get update && sudo apt-get install -y --no-install-recommends bsdmainutils - run: name: Run tests command: bash test/app/test.sh test_cover: <<: *defaults parallelism: 4 steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: mkdir -p /tmp/logs - run: name: Run tests command: | for pkg in $(go list github.com/tendermint/tendermint/... | circleci tests split --split-by=timings); do id=$(basename "$pkg") go test -v -timeout 5m -race -coverprofile=/tmp/workspace/profiles/$id.out -covermode=atomic "$pkg" | tee "/tmp/logs/$id-$RANDOM.log" done - persist_to_workspace: root: /tmp/workspace paths: - "profiles/*" - store_artifacts: path: /tmp/logs test_persistence: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: Run tests command: bash test/persist/test_failure_indices.sh localnet: working_directory: /home/circleci/.go_workspace/src/github.com/tendermint/tendermint machine: image: circleci/classic:latest environment: GOBIN: /home/circleci/.go_workspace/bin GOPATH: /home/circleci/.go_workspace/ GOOS: linux GOARCH: amd64 parallelism: 1 steps: - checkout - run: name: run localnet and exit on failure command: | set -x docker run --rm -v "$PWD":/go/src/github.com/tendermint/tendermint -w /go/src/github.com/tendermint/tendermint golang:1.11.4 make build-linux make localnet-start & ./scripts/localnet-blocks-test.sh 40 5 10 localhost test_p2p: environment: GOBIN: /home/circleci/.go_workspace/bin GOPATH: /home/circleci/.go_workspace machine: image: circleci/classic:latest steps: - checkout - run: mkdir -p $GOPATH/src/github.com/tendermint - run: ln -sf /home/circleci/project $GOPATH/src/github.com/tendermint/tendermint - run: bash test/p2p/circleci.sh - store_artifacts: path: /home/circleci/project/test/p2p/logs upload_coverage: <<: *defaults steps: - attach_workspace: at: /tmp/workspace - restore_cache: key: v3-pkg-cache - restore_cache: key: v3-tree-{{ .Environment.CIRCLE_SHA1 }} - run: name: gather command: | set -ex echo "mode: atomic" > coverage.txt for prof in $(ls /tmp/workspace/profiles/); do tail -n +2 /tmp/workspace/profiles/"$prof" >> coverage.txt done - run: name: upload command: bash .circleci/codecov.sh -f coverage.txt deploy_docs: <<: *docs_update_config steps: - checkout - run: name: Trigger website build command: | chamber exec tendermint -- start_website_build workflows: version: 2 test-suite: jobs: - deploy_docs: filters: branches: only: - master - develop - setup_dependencies - lint: requires: - setup_dependencies - test_abci_apps: requires: - setup_dependencies - test_abci_cli: requires: - setup_dependencies - test_apps: requires: - setup_dependencies - test_cover: requires: - setup_dependencies - test_persistence: requires: - setup_dependencies - localnet: requires: - setup_dependencies - test_p2p - upload_coverage: requires: - test_cover