# This code is part of Qiskit. # # (C) Copyright IBM 2017. # # This code is licensed under the Apache License, Version 2.0. You may # obtain a copy of this license in the LICENSE.txt file in the root directory # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0. # # Any modifications or derivative works of this code must retain this # copyright notice, and modified files need to carry a notice indicating # that they have been altered from the originals. notifications: email: false cache: pip sudo: false ############################################################################### # Anchored and aliased definitions. ############################################################################### # These are used for avoiding repeating code, and due to problems with # overriding some keys (in particular, "os" and "language: ptyhon") when using # the standard travis matrix with stages. # # This allows re-using different "sets" of configurations in the stages # matrix, mimicking a hierarchy: # * stage_generic # * stage_linux # * stage_osx stage_generic: &stage_generic install: # Install step for jobs that require compilation and qa. - pip install -U -r requirements.txt - pip install -U -r requirements-dev.txt coveralls -c constraints.txt - pip install -e . - pip install "qiskit-ibmq-provider" -c constraints.txt script: # Compile the executables and run the tests. - python setup.py build_ext --inplace - make test_ci after_failure: - python tools/report_ci_failure.py stage_linux: &stage_linux <<: *stage_generic os: linux dist: trusty language: python python: 3.5 stage_osx: &stage_osx <<: *stage_generic os: osx osx_image: xcode9.2 language: generic cache: pip: true directories: - ~/python-interpreters/ before_install: # Travis does not provide support for Python 3 under osx - it needs to be # installed manually. | if [ ${TRAVIS_OS_NAME} = "osx" ]; then if [[ ! -d ~/python-interpreters/$PYTHON_VERSION ]]; then git clone git://github.com/pyenv/pyenv.git cd pyenv/plugins/python-build ./install.sh cd ../../.. python-build $PYTHON_VERSION ~/python-interpreters/$PYTHON_VERSION fi virtualenv --python ~/python-interpreters/$PYTHON_VERSION/bin/python venv source venv/bin/activate fi ############################################################################### # Stage-related definitions ############################################################################### # Define the order of the stages. stages: - lint and pure python test - test # Define the job matrix explicitly, as matrix expansion causes issues when # using it with stages and some variables/sections cannot be overridden. jobs: include: # Wheel builds - sudo: required services: - docker env: - CIBW_BEFORE_BUILD="pip install -U Cython" - CIBW_SKIP="cp27-* cp34-*" - TWINE_USERNAME=qiskit - CIBW_TEST_COMMAND="python3 {project}/examples/python/stochastic_swap.py" if: tag IS present script: - sudo pip install cibuildwheel==0.10.2 - sudo pip install -U twine - cibuildwheel --output-dir wheelhouse - twine upload wheelhouse/* - os: osx language: generic if: tag IS present env: - CIBW_BEFORE_BUILD="pip install -U Cython" - CIBW_SKIP="cp27-* cp34-*" - TWINE_USERNAME=qiskit - CIBW_TEST_COMMAND="python3 {project}/examples/python/stochastic_swap.py" script: - sudo pip2 install cibuildwheel==0.10.2 - sudo pip2 install -U twine - cibuildwheel --output-dir wheelhouse - twine upload wheelhouse/* # "lint and and pure python test" stage ########################################################################### # Linter and style check (GNU/Linux, Python 3.5) - stage: lint and pure python test name: Python Style and Linter <<: *stage_linux script: make style && make lint # Run the tests against without compilation (GNU/Linux, Python 3.5) - stage: lint and pure python test name: Python 3.5 Tests Linux <<: *stage_linux # "test" stage ########################################################################### # GNU/Linux, Python 3.6 - stage: test name: Python 3.6 Tests and Coverage Linux <<: *stage_linux python: 3.6 env: - PYTHON="coverage run --source qiskit --parallel-mode" after_success: - coverage combine || true - coveralls || true - coverage xml || true - pip install diff-cover || true - diff-cover --compare-branch master coverage.xml || true # GNU/Linux, Python 3.7 - stage: test name: Python 3.7 Tests Linux <<: *stage_linux # Compiling Python 3.7 requires an Ubuntu Xenial distribution # and sudo set to true # Fix when this is solved: # https://github.com/travis-ci/travis-ci/issues/9815 dist: xenial python: 3.7 sudo: true # OSX, Python 3.5.6 (via pyenv) - stage: test <<: *stage_osx name: Python 3.5 Tests OSX env: - MPLBACKEND=ps - PYTHON_VERSION=3.5.6 # OSX, Python 3.6.5 (via pyenv) - stage: test name: Python 3.6 Tests OSX <<: *stage_osx env: - MPLBACKEND=ps - PYTHON_VERSION=3.6.5 # OSX, Python 3.7.2 (via pyenv) - stage: test name: Python 3.7 Tests OSX <<: *stage_osx env: - MPLBACKEND=ps - PYTHON_VERSION=3.7.2 # Randomized testing - stage: test name: Randomized tests <<: *stage_linux cache: pip: true directories: - .hypothesis script: - python setup.py build_ext --inplace - pip install "qiskit-aer" - make test_randomized - stage: test name: Benchmarks <<: *stage_linux script: - python setup.py build_ext --inplace - pip install "qiskit-aer" - pip install "asv" - git clone "https://www.github.com/Qiskit/qiskit" meta-qiskit - >- sed -i -e 's/"repo": "https:\/\/github.com\/Qiskit\/qiskit-terra.git",/"repo": "..",/' meta-qiskit/asv.conf.json - cat meta-qiskit/asv.conf.json - echo $TRAVIS_BRANCH - echo $TRAVIS_PULL_REQUEST_BRANCH - asv --config meta-qiskit/asv.conf.json machine --machine travis-ci - travis_wait 45 asv --config meta-qiskit/asv.conf.json continuous --interleave-processes --machine travis-ci --no-only-changed --python 3.5 --bench '^(qft|transpiler_benchmarks|state_tomography)\.' $TRAVIS_BRANCH HEAD matrix: fast_finish: true allow_failures: - name: Randomized tests - name: Benchmarks