Skip to content

Commit 67cc509

Browse files
committed
ci: Automatically upload wheels to PyPi when publishing a tag
This commit also removes the use of $<RUN_ENV> command wrapper. Indeed, scikit-build already takes care of setting up the expected environment and installed requirements are either pure-python packages are already distributed as wheels. travis: Ensure system python uses latest version of pip. Create symlink python2 -> python to have a consistent calling convention for invoking python. appveyor: Ensure tags are built
1 parent 6bf9b4e commit 67cc509

File tree

7 files changed

+254
-159
lines changed

7 files changed

+254
-159
lines changed

.circleci/config.yml

Lines changed: 147 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,172 @@
1-
ci-steps: &ci-steps
2-
working_directory: /work
3-
steps:
4-
- checkout
5-
- run:
6-
name:
7-
command: |
8-
export MANYLINUX_PYTHON=$(echo ${CIRCLE_JOB} | cut -d"_" -f2)
9-
echo "MANYLINUX_PYTHON [${MANYLINUX_PYTHON}]"
10-
/opt/python/${MANYLINUX_PYTHON}/bin/pip install scikit-ci
11-
/opt/python/${MANYLINUX_PYTHON}/bin/ci
12-
131
version: 2
14-
jobs:
15-
#
16-
# x64
17-
#
18-
manylinux-x64_cp27-cp27m:
19-
docker:
20-
- image: dockcross/manylinux-x64
21-
<<: *ci-steps
222

23-
manylinux-x64_cp27-cp27mu:
24-
docker:
25-
- image: dockcross/manylinux-x64
26-
<<: *ci-steps
3+
references:
274

28-
manylinux-x64_cp34-cp34m:
5+
ci_steps: &ci_steps
6+
working_directory: /work
7+
steps:
8+
- checkout
9+
- run:
10+
name: Run CI
11+
command: |
12+
#
13+
# Set UPLOAD_SDIST environment variable
14+
#
15+
export UPLOAD_SDIST=$(echo ${CIRCLE_JOB} | cut -d"_" -f3)
16+
echo "UPLOAD_SDIST [${UPLOAD_SDIST}]"
17+
#
18+
# Run CI
19+
#
20+
export MANYLINUX_PYTHON=$(echo ${CIRCLE_JOB} | cut -d"_" -f2)
21+
echo "MANYLINUX_PYTHON [${MANYLINUX_PYTHON}]"
22+
/opt/python/${MANYLINUX_PYTHON}/bin/pip install scikit-ci
23+
/opt/python/${MANYLINUX_PYTHON}/bin/ci
24+
- persist_to_workspace:
25+
root: ./
26+
paths:
27+
- dist
28+
29+
x64_build_job: &x64_build_job
2930
docker:
3031
- image: dockcross/manylinux-x64
31-
<<: *ci-steps
32+
<<: *ci_steps
3233

33-
manylinux-x64_cp35-cp35m:
34+
x86_build_job: &x86_build_job
3435
docker:
35-
- image: dockcross/manylinux-x64
36-
<<: *ci-steps
36+
- image: dockcross/manylinux-x86
37+
<<: *ci_steps
38+
39+
no_filters: &no_filters
40+
filters:
41+
tags:
42+
only: /.*/
43+
44+
jobs:
3745

46+
# x64
47+
manylinux-x64_cp27-cp27m:
48+
<<: *x64_build_job
49+
manylinux-x64_cp27-cp27mu:
50+
<<: *x64_build_job
51+
manylinux-x64_cp34-cp34m:
52+
<<: *x64_build_job
53+
manylinux-x64_cp35-cp35m:
54+
<<: *x64_build_job
3855
manylinux-x64_cp36-cp36m:
39-
docker:
40-
- image: dockcross/manylinux-x64
41-
<<: *ci-steps
56+
<<: *x64_build_job
57+
manylinux-x64_cp37-cp37m_upload-sdist:
58+
<<: *x64_build_job
4259

43-
manylinux-x64_cp37-cp37m:
44-
docker:
45-
- image: dockcross/manylinux-x64
46-
<<: *ci-steps
47-
#
4860
# x86
49-
#
5061
manylinux-x86_cp27-cp27m:
51-
docker:
52-
- image: dockcross/manylinux-x86
53-
<<: *ci-steps
54-
62+
<<: *x86_build_job
5563
manylinux-x86_cp27-cp27mu:
56-
docker:
57-
- image: dockcross/manylinux-x86
58-
<<: *ci-steps
59-
64+
<<: *x86_build_job
6065
manylinux-x86_cp34-cp34m:
61-
docker:
62-
- image: dockcross/manylinux-x86
63-
<<: *ci-steps
64-
66+
<<: *x86_build_job
6567
manylinux-x86_cp35-cp35m:
66-
docker:
67-
- image: dockcross/manylinux-x86
68-
<<: *ci-steps
69-
68+
<<: *x86_build_job
7069
manylinux-x86_cp36-cp36m:
70+
<<: *x86_build_job
71+
manylinux-x86_cp37-cp37m:
72+
<<: *x86_build_job
73+
74+
deploy-master:
7175
docker:
72-
- image: dockcross/manylinux-x86
73-
<<: *ci-steps
76+
- image: circleci/python:3.7.0-stretch
77+
steps:
78+
- attach_workspace:
79+
at: ./
80+
- run:
81+
name: Deploy master
82+
command: |
83+
echo "Deploy master (not implemented)"
7484
75-
manylinux-x86_cp37-cp37m:
85+
deploy-release:
7686
docker:
77-
- image: dockcross/manylinux-x86
78-
<<: *ci-steps
87+
- image: circleci/python:3.7.0-stretch
88+
steps:
89+
- attach_workspace:
90+
at: ./
91+
- run:
92+
name: Deploy release
93+
command: |
94+
echo "Deploy release"
95+
python -m venv ../venv
96+
. ../venv/bin/activate
97+
pip install twine
98+
ls dist
99+
twine upload -u $PYPI_USER -p $PYPI_PASSWORD --skip-existing dist/*
79100
80101
workflows:
81102
version: 2
82103
build-test-deploy:
83104
jobs:
84-
- manylinux-x64_cp27-cp27m
85-
- manylinux-x64_cp27-cp27mu
86-
- manylinux-x64_cp34-cp34m
87-
- manylinux-x64_cp35-cp35m
88-
- manylinux-x64_cp36-cp36m
89-
- manylinux-x64_cp37-cp37m
105+
# x64
106+
- manylinux-x64_cp27-cp27m:
107+
<<: *no_filters
108+
- manylinux-x64_cp27-cp27mu:
109+
<<: *no_filters
110+
- manylinux-x64_cp34-cp34m:
111+
<<: *no_filters
112+
- manylinux-x64_cp35-cp35m:
113+
<<: *no_filters
114+
- manylinux-x64_cp36-cp36m:
115+
<<: *no_filters
116+
- manylinux-x64_cp37-cp37m_upload-sdist:
117+
<<: *no_filters
118+
# x86
119+
- manylinux-x86_cp27-cp27m:
120+
<<: *no_filters
121+
- manylinux-x86_cp27-cp27mu:
122+
<<: *no_filters
123+
- manylinux-x86_cp34-cp34m:
124+
<<: *no_filters
125+
- manylinux-x86_cp35-cp35m:
126+
<<: *no_filters
127+
- manylinux-x86_cp36-cp36m:
128+
<<: *no_filters
129+
- manylinux-x86_cp37-cp37m:
130+
<<: *no_filters
131+
132+
- deploy-master:
133+
requires:
134+
# x64
135+
- manylinux-x64_cp27-cp27m
136+
- manylinux-x64_cp27-cp27mu
137+
- manylinux-x64_cp34-cp34m
138+
- manylinux-x64_cp35-cp35m
139+
- manylinux-x64_cp36-cp36m
140+
- manylinux-x64_cp37-cp37m_upload-sdist
141+
# x86
142+
- manylinux-x86_cp27-cp27m
143+
- manylinux-x86_cp27-cp27mu
144+
- manylinux-x86_cp34-cp34m
145+
- manylinux-x86_cp35-cp35m
146+
- manylinux-x86_cp36-cp36m
147+
- manylinux-x86_cp37-cp37m
148+
filters:
149+
branches:
150+
only: master
151+
- deploy-release:
152+
requires:
153+
# x64
154+
- manylinux-x64_cp27-cp27m
155+
- manylinux-x64_cp27-cp27mu
156+
- manylinux-x64_cp34-cp34m
157+
- manylinux-x64_cp35-cp35m
158+
- manylinux-x64_cp36-cp36m
159+
- manylinux-x64_cp37-cp37m_upload-sdist
160+
# x86
161+
- manylinux-x86_cp27-cp27m
162+
- manylinux-x86_cp27-cp27mu
163+
- manylinux-x86_cp34-cp34m
164+
- manylinux-x86_cp35-cp35m
165+
- manylinux-x86_cp36-cp36m
166+
- manylinux-x86_cp37-cp37m
167+
filters:
168+
tags:
169+
only: /^[0-9]+(\.[0-9]+)*(\.post[0-9]+)?$/
170+
branches:
171+
ignore: /.*/
90172

91-
- manylinux-x86_cp27-cp27m
92-
- manylinux-x86_cp27-cp27mu
93-
- manylinux-x86_cp34-cp34m
94-
- manylinux-x86_cp35-cp35m
95-
- manylinux-x86_cp36-cp36m
96-
- manylinux-x86_cp37-cp37m

.travis.yml

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
21
branches:
32
only:
43
- master
4+
- /^[0-9]+(\.[0-9]+)*(\.post[0-9]+)?$/
55

66
language: python
77

@@ -43,8 +43,9 @@ cache:
4343
- $HOME/downloads
4444

4545
before_install:
46-
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir $HOME/bin; ln -s $(which pip2) $HOME/bin/pip; fi
47-
- pip install scikit-ci==0.13.0 scikit-ci-addons==0.11.0
46+
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir $HOME/bin; ln -s $(which pip2) $HOME/bin/pip; ln -s $(which python2) $HOME/bin/python; fi
47+
- python -m pip install --disable-pip-version-check --upgrade pip
48+
- pip install -U scikit-ci scikit-ci-addons
4849
- ci_addons --install ../addons
4950

5051
install:
@@ -55,6 +56,26 @@ script:
5556

5657
after_success:
5758
- ci after_test
59+
60+
deploy:
61+
# deploy-release
62+
- provider: script
63+
script: pwd && ls dist;echo "deploy-release" && ~/.pyenv/versions/${PYTHON_VERSION}/bin/twine -u $PYPI_USER -p $PYPI_PASSWORD --skip-existing dist/*
64+
skip_cleanup: true
65+
on:
66+
repo: ${TRAVIS_REPO_SLUG}
67+
tags: true
68+
# deploy-master
69+
- provider: script
70+
script: pwd && ls dist;echo "deploy-master" && echo "not implemented"
71+
skip_cleanup: true
72+
on:
73+
repo: ${TRAVIS_REPO_SLUG}
74+
branch: master
75+
5876
env:
5977
global:
60-
secure: sgcVf6bqGdG6xg0wNKzYPbFekcW5O5y0TBGki+NPh3OtdFiQGkTEVaY/hAhjxsl5UEVIuOItj0RHz99CcKUzdGjQkC7AielE7/6yNrXJDXjXhpXqJhnrDmkLS4VZUdLu+h3uzum5mU+jrGn8yvpuFctTvHI7r2GYGyreBtX6iwNXPP+MgVpb5OX6TH70knu2hSfnG7464tAKk77zFZc13hARWma4cO1Ax6iuKetEOL39raVqskGvMnzMzh98DmWYqkMwCzPNpV30C16j8yXNjQ9JKExvHv90lrZCC/ZI5xJkjO9VLR5onYVz/lYwMWB2lO6zBh66I4r9K39hCk15BPalINah3oryONCAEmjNpU5mOZfRlqqXMl/1vVlJf/wHwdqN851JpTgdyQ+iTiPvC1Je16SbK74dSm9T7nlMQkCIZJmIDiSpljDlBzpGZtiXBKEXYcCJSn5hEAeW34SP4h5kgFeFF4W0hLgZWjBOj+0WEwrIy0hobJ/UxhXkZkDcB7Q26QeCFz52K+la9qjh1zyUV5iHpIDlUhOEJ8pMGSmVmOw6k5h0+V4hNei3Hbi4KQu+GfYpmNNVfx1Dxx+/In1F02nT5s662CsrdgBPwzqsFtJBGylcEkiDUuKZ6Q7l5AjMK6bhbLh6dg5ejWaw2d+pCT/5orZk0HP006jwdF0=
78+
# PYPI_USER
79+
- secure: "Xejg5qGnAyo3G+/TaaAr1uHzDv9GLo3mxi6Aw/hZc9gF9lYix1TvkfE6GEBKdPgSLJSqF9NJrwKTt37XH1DjSRLG+qw6Bt1goi5Bkugdk+SC5qmMkvAoG0EKyD119WS4ObrpzqAFcOQqG+4F6iDkSuJLA+dzA3yAzTME4pkhr/2dn0krOSqIcTlgifPwhEaMgo//WRT2dEBM5dWoehXsEMD7VMOUyC0DlV15lKTPKSzTrDEUPU7UFnXgIqZM/brEPbWPQr5Jzgu7BeBk6bmPiiYeh28Cq2juzOzA+JWcGgJmXOfsImYwYuAWZrf0pkE0uQjLySvIBKT7phJv05eNqIxmv/wHK1BPcyMV+2IgFR4+f5ty6C4VUV0hT0HvHr3pMa/8A/5wSNCShEAMTHrwPM5VPWFJtUKTtS5+wwNQDI39MLk/vr9ZTo+y3WJHPaRR0nRpbA3nXFHSqoJJunoMyeI8x9cXZvJ9IENMxGuo3CfBT5RGZamfqSTgn6NjL51ArIMKpvUfm3tXTtlvCHenED1ZQeJI1nWZEalxl8pTyAZoA8S1+h8wraZrUPzhM0QuVpw7vZQeOYu2VSdHO46yxUWoQyb+JWrDTN7EC8vOl7QQzIQlqOWJB5uDJD7UlKKtneTHJrdfXvGxS/hf+Y+hFZK7r+/PDPS6aQjSNDyy+js="
80+
# PYPI_PASSWORD
81+
- secure: "iEHYaOC/yivDupsbRzohWYCwFMZbCfT2hYOM96akQtOfd1d37rqFCFjDKr3BNyvHyHzj+uNQ7IblynWAqu3cax2Z8b9YuIFXFAslD76IIgeIhxmi8jPtamMK0NBXam/LEL49EIVXUnwVZrWjnLcJxVaBHGS/9Ft3zWP5Gspa4G1yAJDhNfs+jrFipxO4DOBie9mGI2jFdbFRgcCYoY6Jo4y95zxUG1YF5e+8sUobLoBgVqyaJP4SP/Zu/4CEWMfJev8EjLBzzkoPwOU+hC09qwf2FQCvBXFrudpjPpY23WDFeKf+LcMoW9tIoUmP6UJcQibqHeidimrbo9jST0+wTo1NYjrvriKrlMho/QS4iYkd5N6DGUrhSXEMSiqfdMjVGDZ00wvCsT3DwqE9eG7K+Kw09enchjcZcggZIt9crqZPJg3GMdSwPYTlRpf2OQmE4OHL3pN5dSH5Es/sb0X1G6JQgB/2Ia9Aks2ywYEdzUZhbMqfLVx75bVS4bLfYMAMhE/j7NxpYaUlVkFhz3srLhnrYyAcvCQ6XF4cSeFfxD1ie62/qFIF/QH5u76t91uURHygvNdyJCNHhVJnnWgN9kPsJxfyfdOC2Dnrz/jJcw5irsgQVO2/K4iyGyBVoOqwwpymjoCkxB8capEoLRNLcwyQqCTBnMtGykyRYF2I7FA="

appveyor.yml

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
21
branches:
3-
only:
4-
- master
2+
only:
3+
- master
4+
- /^[0-9]+(\.[0-9]+)*(\.post[0-9]+)?$/
55

66
version: "0.0.1.{build}"
77

88
environment:
99
matrix:
1010

11-
# Visual Studio (Python 2 & 3, 32 & 64 bit)
1211
- PYTHON_DIR: "C:\\Python27"
1312
PYTHON_VERSION: "2.7.x"
1413
PYTHON_ARCH: "32"
@@ -49,21 +48,26 @@ environment:
4948
PYTHON_ARCH: "64"
5049
BLOCK: "0"
5150

52-
# - PYTHON_DIR: "C:\\Python37"
53-
# PYTHON_VERSION: "3.7.x"
54-
# PYTHON_ARCH: "64"
55-
# BLOCK: "0"
56-
#
57-
# - PYTHON_DIR: "C:\\Python37-x64"
58-
# PYTHON_VERSION: "3.7.x"
59-
# PYTHON_ARCH: "64"
60-
# BLOCK: "0"
51+
- PYTHON_DIR: "C:\\Python37"
52+
PYTHON_VERSION: "3.7.x"
53+
PYTHON_ARCH: "64"
54+
BLOCK: "0"
55+
56+
- PYTHON_DIR: "C:\\Python37-x64"
57+
PYTHON_VERSION: "3.7.x"
58+
PYTHON_ARCH: "64"
59+
BLOCK: "0"
6160

62-
GIRDER_TOKEN:
63-
secure: BJR/8+Z51IgDgkwnKVkmzxxP315kpgy6r952X3P03bIe0YTNo1ZeOSeqqEvJwFQF
61+
PYPI_USER:
62+
secure: j/nubIi1eucjCtYuwpykWg==
63+
PYPI_PASSWORD:
64+
secure: qDoPKmtLMdcKUKRHuTlfaajjzO4Q4yu25FM5JuB7z84=
65+
66+
cache:
67+
- C:\\cmake-3.6.2
6468

6569
init:
66-
- python -m pip install scikit-ci==0.13.0 scikit-ci-addons==0.11.0
70+
- python -m pip install -U scikit-ci scikit-ci-addons
6771
- python -m ci_addons --install ../addons
6872

6973
- ps: ../addons/appveyor/rolling-build.ps1
@@ -83,5 +87,17 @@ after_test:
8387
on_finish:
8488
- ps: ../addons/appveyor/enable-worker-remote-access.ps1 -check_for_block
8589

90+
deploy_script:
91+
- ps: |
92+
if ($env:appveyor_repo_tag -eq $true -and $env:appveyor_repo_tag_name –match "^[0-9]+(\.[0-9]+)*(\.post[0-9]+)?$") {
93+
Write-Host "deploy release"
94+
$env:PATH="$env:PYTHON_DIR/Scripts/;$env:PATH"
95+
twine upload -u $env:PYPI_USER -p $env:PYPI_PASSWORD --skip-existing dist/*
96+
} elseif ($env:appveyor_repo_branch -eq "master") {
97+
Write-Host "deploy master (not implemented)"
98+
} else {
99+
Write-Host "nothing to deploy"
100+
}
101+
86102
matrix:
87103
fast_finish: false

0 commit comments

Comments
 (0)