diff options
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 124 |
1 files changed, 103 insertions, 21 deletions
diff --git a/.travis.yml b/.travis.yml index c9f6e54..8d5abf3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,31 +1,113 @@ language: python -dist: xenial + +env: + global: + TWINE_USERNAME: zope.wheelbuilder + TWINE_PASSWORD: + secure: "U6CeZtNEPDN3qKXfrLcvHFLrowqNWxmapXLWygZRxKgfR+ypowe1Y0a4kCBEBZKtysbY26MmIkrMV07tEMxny1yUWVCvRvUaQw0Ic3t5CM0R019zjVh9fQUTdWGCwri86Qj/OaeuPeMR0LCr6d9nMSun0GWSWhjOUhkTCdchfQw=" + +python: + - 2.7 + - 3.5 + - 3.6 + - 3.7 + - 3.8 + - pypy + - pypy3 + matrix: include: - - python: 2.7 - - python: 3.5 - - python: 3.6 - - python: 3.7 - - python: 3.8 - - python: pypy2.7-6.0 - - python: pypy3.5-6.0 - - python: 2.7 - env: - - PURE_PYTHON=1 - - ZOPE_WATCH_CHECKERS=1 - - python: 3.7 + + - name: "Python: 2.7, pure (no C extensions), with ZOPE_WATCH_CHECKERS enabled" + python: "2.7" + env: PURE_PYTHON=1 ZOPE_WATCH_CHECKERS=1 + + - name: "Python: 3.7, with ZOPE_WATCH_CHECKERS enabled" + python: 3.7 env: ZOPE_WATCH_CHECKERS=1 - - python: 3.7 + + - name: "Python: 3.7, pure (no C extensions)" + python: 3.7 env: PURE_PYTHON=1 + + # manylinux wheel builds + - name: 64-bit manylinux wheels (all Pythons) + services: docker + env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_x86_64 + install: docker pull $DOCKER_IMAGE + script: bash .manylinux.sh + + - name: 32-bit manylinux wheels (all Pythons) + services: docker + env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_i686 PRE_CMD=linux32 + install: docker pull $DOCKER_IMAGE + script: bash .manylinux.sh + + # It's important to use 'macpython' builds to get the least + # restrictive wheel tag. It's also important to avoid + # 'homebrew 3' because it floats instead of being a specific version. + - name: Python 2.7 wheels for MacOS + os: osx + language: generic + env: TERRYFY_PYTHON='macpython 2.7.17' + - name: Python 3.5 wheels for MacOS + os: osx + language: generic + env: TERRYFY_PYTHON='macpython 3.5' + - name: Python 3.6 wheels for MacOS + os: osx + language: generic + env: TERRYFY_PYTHON='macpython 3.6.0' + - name: Python 3.7 wheels for MacOS + os: osx + language: generic + env: TERRYFY_PYTHON='macpython 3.7.0' + +before_install: + - | + if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + git clone https://github.com/MacPython/terryfy + source terryfy/travis_tools.sh + get_python_environment $TERRYFY_PYTHON venv + fi + install: - - pip install -U pip setuptools - - pip install -U coveralls coverage - - pip install -U -e .[test,docs] + - pip install -U pip setuptools + - pip install -U coveralls coverage + - pip install -U -e .[test,docs] + script: - - coverage run -m zope.testrunner --test-path=src - - coverage run -a -m sphinx -b doctest -d docs/_build/doctrees docs docs/_build/doctest + - python --version + - coverage run -m zope.testrunner --test-path=src + - coverage run -a -m sphinx -b doctest -d docs/_build/doctrees docs docs/_build/doctest + - python setup.py bdist_wheel + after_success: - - coveralls + - coveralls + - | + if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then + # macpython 3.5 doesn't support recent TLS protocols which causes twine + # upload to fail, so we use the system Python to run twine + /usr/bin/python -m ensurepip --user + /usr/bin/python -m pip install --user -U pip + /usr/bin/python -m pip install --user -U -I twine + /usr/bin/python -m twine check dist/* + if [[ $TRAVIS_TAG ]]; then + /usr/bin/python -m twine upload --skip-existing dist/* + fi + fi + - | + if [[ -n "$DOCKER_IMAGE" ]]; then + pip install twine + twine check wheelhouse/* + if [[ $TRAVIS_TAG ]]; then + twine upload --skip-existing wheelhouse/* + fi + fi + notifications: - email: false + email: false + cache: pip +before_cache: + - rm -f $HOME/.cache/pip/log/debug.log |