-
Notifications
You must be signed in to change notification settings - Fork 69
/
.travis.yml
145 lines (131 loc) · 4.36 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
language: python
dist: focal
env:
global:
ZOPE_INTERFACE_STRICT_IRO: 1
TWINE_USERNAME: zope.wheelbuilder
TWINE_PASSWORD:
secure: "AyR5QxUuZKdmywiepdBG0r8hgFQfaEf2hTxOg/HiXisVNcs1sUPjephBP4MqQBbf1/qxLM95F6Mw3sKneO3gDDQSGCsmvY1MWlDc+6R5TgqVBuOoONji5zGQH7v9RR8IPOyple8BNlFePl1hQ8r0dOT1U6rDVh5FkNJgHYE9OJ4="
python:
- 2.7
- 3.5
- 3.6
- 3.7
- 3.8
- 3.9
- pypy2
- pypy3
jobs:
include:
- name: Documentation
python: 3.6
install:
- pip install -U -e .[docs]
script:
- sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html
- sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest
after_success:
env: ZOPE_INTERFACE_STRICT_IRO=0
- name: CPython No C Extension
env: PURE_PYTHON=1
python: 3.8
# 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
- name: aarch64 wheels
dist: bionic
group: edge
arch: arm64
virt: lxd
env: DOCKER_IMAGE=quay.io/pypa/manylinux2014_aarch64
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
# We require at least 2.7.15 to upload wheels.
# See https://github.com/zopefoundation/BTrees/issues/113
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
# NB: 3.6.0 causes https://github.com/nedbat/coveragepy/issues/703
# NB: 3.6.1 had that ABI regression (fixed in 3.6.2) and would be a bad
# version to use
env: TERRYFY_PYTHON='macpython 3.6.2'
- name: Python 3.7 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.7.0'
- name: Python 3.8 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.8.0'
- name: Python 3.9 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.9.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:
# virtualenv 20.0 together with terryfy macOS is broken, at least
# with CPython 2.7.17 (https://github.com/pypa/virtualenv/issues/1555):
# it doesn't install or activate the virtualenv correctly and PATH
# isn't setup right. So try to use `python -m` to workaround that.
- python -m pip install -U pip setuptools
- python -m pip install -U coveralls coverage
- python -m pip install -U -e ".[test]"
script:
- which python
- python --version
- python -m coverage run -m unittest discover -s src
- python setup.py -q bdist_wheel
after_success:
- python -m 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
printf "Uploading tagged release %s\n" "$TRAVIS_TAG"
/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
printf "Uploading tagged release %s\n" "$TRAVIS_TAG"
twine upload --skip-existing wheelhouse/*
fi
fi
notifications:
email: false
cache: pip
before_cache:
- rm -f $HOME/.cache/pip/log/debug.log