version: 2 jobs: build: docker: - image: circleci/node:6.12 environment: CONTRACTS_COMMIT_HASH: '9ed05f5' working_directory: ~/repo steps: - checkout - run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV - restore_cache: key: dependency-cache-{{ checksum "package.json" }} - run: name: yarn command: yarn --frozen-lockfile - save_cache: key: dependency-cache-{{ checksum "package.json" }} paths: - ./node_modules - run: wget https://s3.amazonaws.com/testrpc-shapshots/${CONTRACTS_COMMIT_HASH}.zip - run: unzip ${CONTRACTS_COMMIT_HASH}.zip -d testrpc_snapshot - run: node ./node_modules/lerna/bin/lerna.js bootstrap - run: yarn lerna:run build - save_cache: key: repo-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo test-0xjs: docker: - image: circleci/node:6.12 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: name: testrpc command: npm run testrpc -- --db testrpc_snapshot background: true - run: yarn lerna:run --scope 0x.js test:circleci - save_cache: key: coverage-0xjs-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/0x.js/coverage/lcov.info test-contracts: docker: - image: circleci/node:6.12 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: name: testrpc command: npm run testrpc -- --db testrpc_snapshot background: true - run: yarn lerna:run --scope contracts test:circleci - save_cache: key: coverage-contracts-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/contracts/coverage/lcov.info test-deployer: docker: - image: circleci/node:6.12 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: name: testrpc command: npm run testrpc -- --db testrpc_snapshot background: true - run: yarn lerna:run --scope @0xproject/deployer test:circleci - save_cache: key: coverage-deployer-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/deployer/coverage/lcov.info test-rest: docker: - image: circleci/node:6.12 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: name: testrpc command: npm run testrpc -- --db testrpc_snapshot background: true - run: yarn lerna:run --ignore contracts --ignore 0x.js --ignore @0xproject/deployer test:circleci - save_cache: key: coverage-assert-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/assert/coverage/lcov.info - save_cache: key: coverage-connect-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/connect/coverage/lcov.info - save_cache: key: coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/dev-utils/coverage/lcov.info - save_cache: key: coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/json-schemas/coverage/lcov.info - save_cache: key: coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/subproviders/coverage/lcov.info lint: working_directory: ~/repo docker: - image: circleci/node:6.12 steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn lerna:run lint prettier: working_directory: ~/repo docker: - image: circleci/node:6.12 steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn prettier:ci submit-coverage: docker: - image: circleci/node:6.12 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-contracts-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-assert-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-connect-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-dev-utils-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-json-schemas-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-deployer-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-0xjs-{{ .Environment.CIRCLE_SHA1 }} - run: yarn report_coverage workflows: version: 2 main: jobs: - build - test-0xjs: requires: - build - test-contracts: requires: - build - test-deployer: requires: - build - test-rest: requires: - build - prettier: requires: - build - lint: requires: - build - submit-coverage: requires: - test-0xjs - test-deployer - test-rest - test-contracts