version: 2 jobs: build: resource_class: medium+ docker: - image: circleci/node:9 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: name: Restore Yarn Package Cache keys: - yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }} - yarn-packages-{{ .Branch }} - yarn-packages-master - yarn-packages- - run: name: install-yarn command: sudo npm install --global yarn@1.9.4 - run: name: yarn command: yarn --frozen-lockfile install || yarn --frozen-lockfile install - save_cache: name: Save Yarn Package Cache key: yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }} paths: - node_modules/ - run: > if [ -z "$(git diff --name-only development packages/website)" ]; then yarn build:no_website else yarn build fi - save_cache: key: repo-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo test-contracts-ganache: docker: - image: circleci/node:9 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn wsrun test:circleci contracts test-contracts-geth: docker: - image: circleci/node:9 - image: 0xorg/devnet working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} # HACK(albrow): we need to sleep 10 seconds to ensure the devnet is # initialized - run: sleep 10 && TEST_PROVIDER=geth yarn wsrun test contracts test-publish: resource_class: medium+ docker: - image: circleci/node:9 - image: 0xorg/verdaccio working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn test:publish:circleci test-doc-generation: docker: - image: circleci/node:9 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn test:generate_docs:circleci test-rest: docker: - image: circleci/node:9 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn wsrun test:circleci @0xproject/abi-gen - run: yarn wsrun test:circleci @0xproject/assert - run: yarn wsrun test:circleci @0xproject/base-contract - run: yarn wsrun test:circleci @0xproject/connect - run: yarn wsrun test:circleci @0xproject/contract-wrappers - run: yarn wsrun test:circleci @0xproject/dev-utils - run: yarn wsrun test:circleci @0xproject/json-schemas - run: yarn wsrun test:circleci @0xproject/metacoin - run: yarn wsrun test:circleci @0xproject/order-utils - run: yarn wsrun test:circleci @0xproject/order-watcher - run: yarn wsrun test:circleci @0xproject/sol-compiler - run: yarn wsrun test:circleci @0xproject/sol-cov - run: yarn wsrun test:circleci @0xproject/sol-doc - run: yarn wsrun test:circleci @0xproject/sra-report - run: yarn wsrun test:circleci @0xproject/subproviders - run: yarn wsrun test:circleci @0xproject/web3-wrapper - run: yarn wsrun test:circleci @0xproject/utils - save_cache: key: coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/abi-gen/coverage/lcov.info - save_cache: key: coverage-assert-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/assert/coverage/lcov.info - save_cache: key: coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/base-contract/coverage/lcov.info - save_cache: key: coverage-connect-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/connect/coverage/lcov.info - save_cache: key: coverage-contract-wrappers-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/contract-wrappers/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-metacoin-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/metacoin/coverage/lcov.info - save_cache: key: coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/order-utils/coverage/lcov.info - save_cache: key: coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/order-watcher/coverage/lcov.info - save_cache: key: coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sol-compiler/coverage/lcov.info - save_cache: key: coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sol-cov/coverage/lcov.info - save_cache: key: coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sol-doc/coverage/lcov.info - save_cache: key: coverage-sra-report-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sra-report/coverage/lcov.info - save_cache: key: coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/subproviders/coverage/lcov.info - save_cache: key: coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/web3-wrapper/coverage/lcov.info static-tests: working_directory: ~/repo docker: - image: circleci/node:9 steps: - checkout - run: yarn prettier:ci - run: yarn lerna run lint bundle-size: docker: - image: circleci/node:9 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: cd packages/0x.js && yarn build:umd:prod - run: yarn bundlesize submit-coverage: docker: - image: circleci/node:9 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-abi-gen-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-assert-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-base-contract-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-connect-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-contract-wrappers-{{ .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-metacoin-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-order-utils-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-order-watcher-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-cov-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sra-report-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-subproviders-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-web3-wrapper-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-contracts-{{ .Environment.CIRCLE_SHA1 }} - run: yarn report_coverage workflows: version: 2 main: jobs: - build - test-contracts-ganache: requires: - build - test-contracts-geth: requires: - build - test-rest: requires: - build - static-tests - bundle-size: requires: - build - test-publish: requires: - build - test-doc-generation: requires: - build - submit-coverage: requires: - test-rest