Skip to content

Commit ce0273f

Browse files
committed
Publish OS X wheels to PYPI @ Travis CI
* Add OS X deploy matrix combination * Add dpl job labels via hacking env vars * Simplify pyenv helper Closes #156
1 parent 12f0b3a commit ce0273f

1 file changed

Lines changed: 133 additions & 28 deletions

File tree

.travis.yml

Lines changed: 133 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,69 @@ _helpers:
6969
then
7070
rm -rf "$PYENV_ROOT"
7171
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
72-
eval "$(pyenv init -)"
73-
eval "$(pyenv virtualenv-init -)"
7472
fi
73+
pyenv update
7574
eval "$(pyenv init -)"
7675
eval "$(pyenv virtualenv-init -)"
77-
pyenv update
7876
- &install_python pyenv install --skip-existing --keep --verbose "$PYTHON_VERSION"
7977
- &switch_python pyenv shell "$PYTHON_VERSION"
8078
- &python_version python --version
8179
before_cache:
8280
- brew --cache
81+
- &generic_deploy_base
82+
stage: &deploy_stage_name deploy (PYPI upload itself runs only for tagged commits)
83+
<<: *_mainstream_python_base
84+
deploy: &deploy_step
85+
provider: pypi
86+
# `skip_cleanup: true` is required to preserve binary wheels, built
87+
# inside of manylinux1 docker container during `script` step above.
88+
skip_cleanup: true
89+
user: andrew.svetlov
90+
password:
91+
secure: ZFCicrh4l5zraarOwAwLXzYyGLnrxMHAFEFxF6ZEpECamu4eDsbKAFM/ydYdHoL19ocLr5+Xg1fmgd5tjc29c2rHQh29iDFi7tWai2pDFw+WqeHaV6e7ZJEEnU29OpSRzkGIk+K27mn7ZsB97q3Rkg2JBYRBkeK6HNyZ5YgIaVssXXXuCi5LZ1Y0rg8Nbapes1RUqoHGWgBwlCjAVxp9U7RXqJ6jucHDGUHU+9AgnnlGI7Cqs3xLqp4/xt2VoIjL0XwG2y05WLLpEF3Jwtj2voiPsnSTpUwklXVr1rEwScPCMlImxmWmudvh7xcPtcK9IOHIvk6y/lmNHJeevRn+df50LtBdr+0Wrq/t3Tt5d05XKCgqaLtw2P4GYNfTsx1RmQjHzUlfHKke7UZ1P+GsZTKN9nLKVdFTi2YzQ0TVmr/JjAmVqldRBOvEMnVoDn1rj1gdHMIu4d/gRVTcSS3riey+L2o6NwKjoc7aV5Uz47Z7fjz09Q6xml9eBWAHx9O07Iq+BaCikhBzeHGo+AkIzGMQdCSyQ8tTjQtEq6zWGxolZQFJeW9glTGLSYMfiVaPDEyqxaDm/QKssnZiEIbq1YM018C6ojiA3xbPJrwSZ8l/mnCkxrIcbKcwwtaHFPyP/FicePT01oJAXx08wnwe5H2l6lqkSGgRnGendZNeEuQ=
92+
# Although Travis CI instructs `setup.py` to build source distribution,
93+
# which is default value for distribution option (`distribution: sdist`),
94+
# it will also upload all wheels we've previously built in manylinux1
95+
# docker container using `twine upload -r pypi dist/*` command.
96+
# Also since commit https://github.com/travis-ci/dpl/commit/90b5e39
97+
# it is default that Travis PYPI provider has `skip_upload_docs: true`
98+
# set by default.
99+
# Besides above, we don't do cleanup of `dist/*`, because it's being done
100+
# by Travis CI PYPI deployment provider after upload, unconditionally.
101+
on:
102+
tags: true
103+
all_branches: true
104+
- &osx_pypi_deploy_base_1011
105+
<<: *osx_python_base
106+
<<: *generic_deploy_base
107+
osx_image: xcode7.3
108+
script: skip
109+
after_success: []
110+
env:
111+
- &env_os1011_msg Build and deploy to PYPI of OS X 10.11 binary wheel
112+
- *env_py36
113+
- *env_pyenv
114+
- *env_path
115+
deploy:
116+
<<: *deploy_step
117+
skip_cleanup: false
118+
distributions: bdist_wheel
119+
- &osx_pypi_deploy_base_1012
120+
<<: *osx_pypi_deploy_base_1011
121+
osx_image: xcode8.1
122+
env:
123+
- &env_os1012_msg Build and deploy to PYPI of OS X 10.12 binary wheel
124+
- *env_py36
125+
- *env_pyenv
126+
- *env_path
127+
- &osx_pypi_deploy_base_1010
128+
<<: *osx_pypi_deploy_base_1011
129+
osx_image: xcode6.4
130+
env:
131+
- &env_os1010_msg Build and deploy to PYPI of OS X 10.10 binary wheel
132+
- *env_py36
133+
- *env_pyenv
134+
- *env_path
83135

84136
os: linux
85137

@@ -124,19 +176,19 @@ jobs:
124176
- <<: *osx_python_base
125177
python: 3.4
126178
env:
127-
- PYTHON_VERSION=3.4.6
179+
- &env_py34 PYTHON_VERSION=3.4.6
128180
- *env_pyenv
129181
- *env_path
130182
- <<: *osx_python_base
131183
python: 3.5
132184
env:
133-
- PYTHON_VERSION=3.5.3
185+
- &env_py35 PYTHON_VERSION=3.5.3
134186
- *env_pyenv
135187
- *env_path
136188
- <<: *osx_python_base
137189
python: *mainstream_python
138190
env:
139-
- PYTHON_VERSION=3.6.1
191+
- &env_py36 PYTHON_VERSION=3.6.1
140192
- *env_pyenv
141193
- *env_path
142194
- <<: *osx_python_base
@@ -147,38 +199,91 @@ jobs:
147199
- *env_path
148200
# pypy3.5-5.8.0 fails under OS X because it's unsupported
149201

150-
- stage: &deploy_stage_name deploy (PYPI upload itself runs only for tagged commits)
151-
<<: *_mainstream_python_base
202+
# Build and deploy manylinux1 binary wheels and source distribution
203+
- <<: *generic_deploy_base
152204
<<: *_reset_steps
205+
env: Build and deploy to PYPI of manylinux1 binary wheels for all supported Pythons and source distribution
153206
dist: trusty
154207
group: edge
155208
services:
156209
- docker
157210
script:
158211
- mkdir dist # so that it whould have priviliges of the current Travis user
159212
- ./tools/run_docker.sh "multidict"
160-
deploy:
161-
provider: pypi
162-
# `skip_cleanup: true` is required to preserve binary wheels, built
163-
# inside of manylinux1 docker container during `script` step above.
164-
skip_cleanup: true
165-
user: andrew.svetlov
166-
password:
167-
secure: ZFCicrh4l5zraarOwAwLXzYyGLnrxMHAFEFxF6ZEpECamu4eDsbKAFM/ydYdHoL19ocLr5+Xg1fmgd5tjc29c2rHQh29iDFi7tWai2pDFw+WqeHaV6e7ZJEEnU29OpSRzkGIk+K27mn7ZsB97q3Rkg2JBYRBkeK6HNyZ5YgIaVssXXXuCi5LZ1Y0rg8Nbapes1RUqoHGWgBwlCjAVxp9U7RXqJ6jucHDGUHU+9AgnnlGI7Cqs3xLqp4/xt2VoIjL0XwG2y05WLLpEF3Jwtj2voiPsnSTpUwklXVr1rEwScPCMlImxmWmudvh7xcPtcK9IOHIvk6y/lmNHJeevRn+df50LtBdr+0Wrq/t3Tt5d05XKCgqaLtw2P4GYNfTsx1RmQjHzUlfHKke7UZ1P+GsZTKN9nLKVdFTi2YzQ0TVmr/JjAmVqldRBOvEMnVoDn1rj1gdHMIu4d/gRVTcSS3riey+L2o6NwKjoc7aV5Uz47Z7fjz09Q6xml9eBWAHx9O07Iq+BaCikhBzeHGo+AkIzGMQdCSyQ8tTjQtEq6zWGxolZQFJeW9glTGLSYMfiVaPDEyqxaDm/QKssnZiEIbq1YM018C6ojiA3xbPJrwSZ8l/mnCkxrIcbKcwwtaHFPyP/FicePT01oJAXx08wnwe5H2l6lqkSGgRnGendZNeEuQ=
168-
# Although Travis CI instructs `setup.py` to build source distribution,
169-
# which is default value for distribution option (`distribution: sdist`),
170-
# it will also upload all wheels we've previously built in manylinux1
171-
# docker container using `twine upload -r pypi dist/*` command.
172-
# Also since commit https://github.com/travis-ci/dpl/commit/90b5e39
173-
# it is default that Travis PYPI provider has `skip_upload_docs: true`
174-
# set by default.
175-
# Besides above, we don't do cleanup of `dist/*`, because it's being done
176-
# by Travis CI PYPI deployment provider after upload, unconditionally.
177-
on:
178-
tags: true
179-
all_branches: true
213+
214+
# Build and deploy MacOS binary wheels for each OSX+Python combo possible
215+
# OS X 10.10, Python 3.4
216+
- <<: *osx_pypi_deploy_base_1010
217+
python: 3.4
218+
env:
219+
- *env_os1010_msg
220+
- *env_py34
221+
- *env_pyenv
222+
- *env_path
223+
# OS X 10.10, Python 3.5
224+
- <<: *osx_pypi_deploy_base_1010
225+
python: 3.5
226+
env:
227+
- *env_os1010_msg
228+
- *env_py35
229+
- *env_pyenv
230+
- *env_path
231+
# OS X 10.10, Python 3.6
232+
- <<: *osx_pypi_deploy_base_1010
233+
env:
234+
- *env_os1010_msg
235+
- *env_py36
236+
- *env_pyenv
237+
- *env_path
238+
# OS X 10.11, Python 3.4
239+
- <<: *osx_pypi_deploy_base_1011
240+
python: 3.4
241+
env:
242+
- *env_os1011_msg
243+
- *env_py34
244+
- *env_pyenv
245+
- *env_path
246+
# OS X 10.11, Python 3.5
247+
- <<: *osx_pypi_deploy_base_1011
248+
python: 3.5
249+
env:
250+
- *env_os1011_msg
251+
- *env_py35
252+
- *env_pyenv
253+
- *env_path
254+
# OS X 10.11, Python 3.6
255+
- <<: *osx_pypi_deploy_base_1011
256+
env:
257+
- *env_os1011_msg
258+
- *env_py36
259+
- *env_pyenv
260+
- *env_path
261+
# OS X 10.12, Python 3.4
262+
- <<: *osx_pypi_deploy_base_1012
263+
python: 3.4
264+
env:
265+
- *env_os1012_msg
266+
- *env_py34
267+
- *env_pyenv
268+
- *env_path
269+
# OS X 10.12, Python 3.5
270+
- <<: *osx_pypi_deploy_base_1012
271+
python: 3.5
272+
env:
273+
- *env_os1012_msg
274+
- *env_py35
275+
- *env_pyenv
276+
- *env_path
277+
# OS X 10.12, Python 3.6
278+
- <<: *osx_pypi_deploy_base_1012
279+
env:
280+
- *env_os1012_msg
281+
- *env_py36
282+
- *env_pyenv
283+
- *env_path
180284

181285
stages:
286+
- *test_dpl
182287
- *doc_stage_name
183288
- test
184289
- name: *stage_test_osx_name

0 commit comments

Comments
 (0)