version: 2.1 commands: init_workspace: steps: - run: name: Install Dependency Libraries command: | sudo apt update sudo apt-get install openssl libssl-dev libgmp-dev - run: name: "Prepare Workspace" command: sudo chown -R `whoami` /go - attach_workspace: at: /go run_test: steps: - run: name: "Running Test" no_output_timeout: 900 command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then make test else make test-short fi install_npm: steps: - run: name: Install npm command: | curl -sL https://deb.nodesource.com/setup_11.x | sudo bash - sudo apt-get install -y nodejs executors: go1_11: docker: - image: circleci/golang:1.11 working_directory: /go/src/github.com/dexon-foundation/dexon-consensus jobs: dep: executor: go1_11 steps: - init_workspace - checkout - restore_cache: keys: - v1-Gopkg.lock-{{ .Branch }}-{{ checksum "Gopkg.toml" }} - restore_cache: keys: - v1-vendor-{{ .Branch }}-{{ checksum "Gopkg.lock" }} - run: bin/install_tools.sh - run: dep ensure - save_cache: key: v1-Gopkg.lock-{{ .Branch }}-{{ checksum "Gopkg.toml" }} paths: - Gopkg.lock - save_cache: key: v1-vendor-{{ .Branch }}-{{ checksum "Gopkg.lock" }} paths: - vendor - run: make dep - persist_to_workspace: root: /go paths: - src - bin lint: executor: go1_11 steps: - init_workspace - run: make check-format - run: make lint - run: make vet security: executor: go1_11 steps: - init_workspace - run: make check-security unit_test: executor: go1_11 environment: GOCACHE: "off" NO_INTEGRATION_TEST: true steps: - init_workspace - run_test integration_test: executor: go1_11 environment: ONLY_INTEGRATION_TEST: true NO_TEST_RACE: true steps: - init_workspace - run_test build: executor: go1_11 steps: - init_workspace - run: make snyk: executor: go1_11 steps: - init_workspace - install_npm - run: sudo npm install -g snyk - run: snyk auth $SNYK_APIKEY_JHU - run: snyk monitor --org=dexon-foundation --project=dexon-consensus workflows: version: 2.1 nightly: jobs: - dep - snyk: requires: - dep triggers: - schedule: cron: "0 8 * * *" filters: branches: only: - master test_and_build: jobs: - dep - lint: requires: - dep - security: requires: - dep - unit_test: requires: - security - lint - integration_test: requires: - security - lint - build: requires: - unit_test - integration_test