version: 2 jobs: build: resource_class: medium+ docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 environment: CONTRACTS_COMMIT_HASH: '9ed05f5' working_directory: ~/repo steps: - checkout - run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV # HACK(feuGeneA): commented out this hack as we're changing # from a circleci-maintained container to a different # container, and this hack may not apply anymore, as # suggested by the non-existance of `/home/circleci/.bashrc` # when running the command below. # - run: # # HACK(albrow): Without this, yarn commands will sometimes # # fail with a "permission denied" error. # name: Set npm path # command: npm set prefix=/home/circleci/npm && echo 'export PATH=$HOME/circleci/npm/bin:$PATH' >> /home/circleci/.bashrc - run: name: install-yarn command: npm install --global yarn@1.17.0 - run: name: yarn command: yarn --frozen-lockfile --ignore-engines install || yarn --frozen-lockfile --ignore-engines install - setup_remote_docker - run: yarn build:ci:no_website - run: yarn build:ts - save_cache: key: repo-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo - store_artifacts: path: ~/repo/packages/abi-gen/test-cli/output - store_artifacts: path: ~/repo/packages/abi-gen-wrappers/generated_docs build-website: resource_class: medium+ docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: cd packages/website && yarn build:prod test-contracts-ganache: resource_class: medium+ docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn wsrun test:circleci @0x/contracts-multisig @0x/contracts-utils @0x/contracts-exchange-libs @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-extensions @0x/contracts-asset-proxy @0x/contracts-exchange @0x/contracts-exchange-forwarder @0x/contracts-coordinator @0x/contracts-dev-utils test-contracts-geth: docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 - 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:circleci @0x/contracts-multisig @0x/contracts-utils @0x/contracts-exchange-libs @0x/contracts-erc20 @0x/contracts-erc721 @0x/contracts-erc1155 @0x/contracts-extensions @0x/contracts-asset-proxy @0x/contracts-exchange @0x/contracts-exchange-forwarder @0x/contracts-coordinator @0x/contracts-dev-utils test-publish: resource_class: medium+ docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 - image: 0xorg/verdaccio working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn test:publish:circleci test-doc-generation: docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn test:generate_docs:circleci test-rest: docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 working_directory: ~/repo steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn wsrun test:circleci @0x/contracts-test-utils - run: yarn wsrun test:circleci @0x/abi-gen - run: yarn wsrun test:circleci @0x/asset-buyer - run: yarn wsrun test:circleci @0x/contract-artifacts - run: yarn wsrun test:circleci @0x/assert - run: yarn wsrun test:circleci @0x/base-contract - run: yarn wsrun test:circleci @0x/connect - run: yarn wsrun test:circleci @0x/contract-wrappers - run: yarn wsrun test:circleci @0x/dev-utils - run: yarn wsrun test:circleci @0x/json-schemas - run: yarn wsrun test:circleci @0x/order-utils - run: yarn wsrun test:circleci @0x/sol-compiler - run: yarn wsrun test:circleci @0x/sol-tracing-utils - run: yarn wsrun test:circleci @0x/sol-doc - run: yarn wsrun test:circleci @0x/subproviders - run: yarn wsrun test:circleci @0x/web3-wrapper - run: yarn wsrun test:circleci @0x/utils - run: yarn wsrun test:circleci @0x/instant - 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-asset-buyer-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/asset-buyer/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-order-utils-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/order-utils/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-tracing-utils-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sol-tracing-utils/coverage/lcov.info - save_cache: key: coverage-sol-doc-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/packages/sol-doc/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 test-python: working_directory: ~/repo docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 - image: 0xorg/ganache-cli:2.2.2 - image: 0xorg/launch-kit-backend:74bcc39 environment: RPC_URL: http://localhost:8545 NETWORK_ID: 50 WHITELIST_ALL_TOKENS: True command: | sh -c "until printf 'POST /\r\nContent-Length: 26\r\n\r\n{\"method\":\"net_listening\"}' | nc localhost 8545 | grep true; do continue; done; node_modules/.bin/forever ts/lib/index.js" steps: - checkout - restore_cache: key: installed-py-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: command: | cd python-packages python -m ensurepip ./pre_install ./install - save_cache: key: installed-py-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }} paths: - '/usr/local/bin' - '/usr/local/lib/python3.7/site-packages' - run: command: | cd python-packages ./parallel_without_sra_client coverage run setup.py test ./build_docs - save_cache: key: coverage-python-contract-addresses-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/contract_addresses/.coverage - save_cache: key: coverage-python-contract-artifacts-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/contract_artifacts/.coverage - save_cache: key: coverage-python-contract-demo-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/contract_demo/.coverage - save_cache: key: coverage-python-json-schemas-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/json_schemas/.coverage - save_cache: key: coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/order_utils/.coverage - save_cache: key: coverage-python-sra-client-{{ .Environment.CIRCLE_SHA1 }} paths: - ~/repo/python-packages/sra_client/.coverage - store_artifacts: path: ~/repo/python-packages/contract_wrappers/src/zero_ex/contract_wrappers/*/__init__.py - store_artifacts: path: ~/repo/python-packages/contract_addresses/build - store_artifacts: path: ~/repo/python-packages/contract_artifacts/build - store_artifacts: path: ~/repo/python-packages/contract_wrappers/build - store_artifacts: path: ~/repo/python-packages/json_schemas/build - store_artifacts: path: ~/repo/python-packages/middlewares/build - store_artifacts: path: ~/repo/python-packages/order_utils/build - store_artifacts: path: ~/repo/python-packages/sra_client/build test-rest-python: working_directory: ~/repo docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 steps: - checkout - restore_cache: key: installed-py-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }} - run: command: | cd python-packages/order_utils python -m ensurepip python -m pip install . - save_cache: key: installed-py-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }} paths: - '/usr/local/bin' - '/usr/local/lib/python3.7/site-packages' - '.eggs' - '.mypy_cache' - '.pytest_cache' - '.tox' - run: command: | cd python-packages/order_utils tox static-tests-python: working_directory: ~/repo docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 steps: - checkout - restore_cache: key: installed-py-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: command: | python -m ensurepip cd python-packages ./pre_install ./install ./lint static-tests: working_directory: ~/repo docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 steps: - restore_cache: keys: - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn lerna run lint - run: yarn prettier:ci - run: yarn deps_versions:ci - run: cd packages/0x.js && yarn build:umd:prod - run: yarn bundlewatch submit-coverage: docker: - image: nikolaik/python-nodejs:python3.7-nodejs8 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-asset-buyer-{{ .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-order-utils-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-compiler-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-tracing-utils-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-sol-doc-{{ .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 }} - restore_cache: keys: - coverage-python-json-schemas-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-python-contract-addresses-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-python-contract-artifacts-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-python-contract-demo-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-python-sra-client-{{ .Environment.CIRCLE_SHA1 }} - restore_cache: keys: - coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }} - run: yarn report_coverage workflows: version: 2 main: jobs: - build - build-website: requires: - build - test-contracts-ganache: requires: - build # TODO(albrow): Tests always fail on Geth right now because our fork # is outdated. Uncomment once we have updated our Geth fork. # - test-contracts-geth: # requires: # - build - test-rest: requires: - build - static-tests: requires: - build - test-publish: requires: - build - test-doc-generation: requires: - build - submit-coverage: requires: - test-rest - test-python - static-tests-python: requires: - test-python - test-python: requires: - build # skip python tox run for now, as we don't yet have multiple test environments to support. #- test-rest-python