aboutsummaryrefslogblamecommitdiffstats
path: root/.circleci/config.yml
blob: 876b861d30108dbdedaff5a587ebeb29b8b60838 (plain) (tree)
1
2
3


          





















                                                                                                  
                           









































































































































                                                                         



















































































                                                                                   










                                                     
                             


























































                                                                       


                                                                        
                                 
          



             


                      

                               
                   

















                            




                                                                                                
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
      - 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
      - run: yarn build:ci:no_website
      - save_cache:
          key: repo-{{ .Environment.CIRCLE_SHA1 }}
          paths:
            - ~/repo
  build-website:
    resource_class: medium+
    docker:
      - image: circleci/node:9
    working_directory: ~/repo
    steps:
      - restore_cache:
          keys:
            - repo-{{ .Environment.CIRCLE_SHA1 }}
      - run: cd packages/website && yarn build
  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
  test-python:
    working_directory: ~/repo
    docker:
      - image: circleci/python
    steps:
      - checkout
      - run: sudo chown -R circleci:circleci /usr/local/bin
      - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
      - restore_cache:
          key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
      - run:
          command: |
            cd python-packages/order_utils
            python -m ensurepip
            python -m pip install -e .[dev]
      - save_cache:
          key: deps9-{{ .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
            coverage run setup.py test
      - save_cache:
          key: coverage-python-order-utils-{{ .Environment.CIRCLE_SHA1 }}
          paths:
            - ~/repo/python-packages/order_utils/.coverage
  test-rest-python:
    working_directory: ~/repo
    docker:
      - image: circleci/python
    steps:
      - checkout
      - run: sudo chown -R circleci:circleci /usr/local/bin
      - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
      - restore_cache:
          key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
      - run:
          command: |
            cd python-packages/order_utils
            python -m ensurepip
            python -m pip install -e .[dev]
      - save_cache:
          key: deps9-{{ .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: circleci/python
    steps:
      - checkout
      - run: sudo chown -R circleci:circleci /usr/local/bin
      - run: sudo chown -R circleci:circleci /usr/local/lib/python3.7/site-packages
      - restore_cache:
          key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
      - run:
          command: |
            cd python-packages/order_utils
            python -m ensurepip
            python -m pip install -e .[dev]
      - save_cache:
          key: deps9-{{ .Branch }}-{{ .Environment.CIRCLE_SHA1 }}
          paths:
            - "/usr/local/bin"
            - "/usr/local/lib/python3.7/site-packages"
      - run:
          command: |
            cd python-packages/order_utils
            python setup.py lint
  static-tests:
    working_directory: ~/repo
    docker:
      - image: circleci/node:9
    steps:
      - restore_cache:
          keys:
            - repo-{{ .Environment.CIRCLE_SHA1 }}
      - run: yarn lerna run lint
      - run: yarn prettier:ci
      - run: cd packages/0x.js && yarn build:umd:prod
      - run: yarn bundlewatch
  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 }}
      - 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
      - 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
      - test-python
      - static-tests-python
      # skip python tox run for now, as we don't yet have multiple test environments to support.
      #- test-rest-python