Skip to content

Commit 2fe0089

Browse files
committed
ci: Build wheels for Python 3.6
1 parent 519fef9 commit 2fe0089

9 files changed

+131
-111
lines changed

.ci/appveyor.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ environment:
1414
matrix:
1515
- PYTHON: "C:\\Python35\\python.exe"
1616
- PYTHON: "C:\\Python35-x64\\python.exe"
17+
- PYTHON: "C:\\Python36\\python.exe"
18+
- PYTHON: "C:\\Python36-x64\\python.exe"
1719

1820
install:
1921
- "%PYTHON% -m pip install --upgrade pip wheel setuptools"

.ci/travis-before-install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
if [ "${TRAVIS_OS_NAME}" == "linux" -a "${BUILD}" == "full" ]; then
3+
if [[ "${TRAVIS_OS_NAME}" == "linux" && "${BUILD}" == *wheels* ]]; then
44
# Allow docker guests to connect to the database
55
sudo service postgresql stop ${PGVERSION}
66
echo "listen_addresses = '*'" | \

.ci/travis-build-docs.sh

Lines changed: 1 addition & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,11 @@
11
#!/bin/bash
22

3-
# Based on https://gist.github.com/domenic/ec8b0fc8ab45f39403dd
4-
53
set -e -x
64

7-
if [ "${BUILD}" != "docs" ]; then
5+
if [[ "${BUILD}" != *docs* ]]; then
86
echo "Skipping documentation build."
97
exit 0
108
fi
119

12-
SOURCE_BRANCH="master"
13-
TARGET_BRANCH="gh-pages"
14-
DOC_BUILD_DIR="_build/html/"
15-
1610
pip install -r docs/requirements.txt
1711
make htmldocs
18-
19-
if [ "${TRAVIS_PULL_REQUEST}" != "false" -o -z "${TRAVIS_TAG}" ]; then
20-
echo "Skipping documentation deploy."
21-
exit 0
22-
fi
23-
24-
git config --global user.email "infra@magic.io"
25-
git config --global user.name "Travis CI"
26-
27-
REPO=$(git config remote.origin.url)
28-
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
29-
COMMITISH=$(git rev-parse --verify HEAD)
30-
AUTHOR=$(git show --format="%aN <%aE>" "${COMMITISH}")
31-
32-
git clone "${REPO}" docs/gh-pages
33-
cd docs/gh-pages
34-
git checkout "${TARGET_BRANCH}" || git checkout --orphan "${TARGET_BRANCH}"
35-
cd ..
36-
37-
rm -r gh-pages/devel/
38-
rsync -a "${DOC_BUILD_DIR}/" gh-pages/devel/
39-
40-
if [ -n "${TRAVIS_TAG}" ]; then
41-
rm -r gh-pages/current/
42-
rsync -a "${DOC_BUILD_DIR}/" gh-pages/current/
43-
fi
44-
45-
cd gh-pages
46-
47-
if git diff --quiet --exit-code; then
48-
echo "No changes to documentation."
49-
exit 0
50-
fi
51-
52-
git add --all .
53-
git commit -m "Automatic documentation update" --author="${AUTHOR}"
54-
55-
set +x
56-
echo "Decrypting push key..."
57-
ENCRYPTED_KEY_VAR="encrypted_${DOCS_PUSH_KEY_LABEL}_key"
58-
ENCRYPTED_IV_VAR="encrypted_${DOCS_PUSH_KEY_LABEL}_iv"
59-
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
60-
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
61-
openssl aes-256-cbc -K "${ENCRYPTED_KEY}" -iv "${ENCRYPTED_IV}" \
62-
-in "${TRAVIS_BUILD_DIR}/.ci/push_key.enc" \
63-
-out "${TRAVIS_BUILD_DIR}/.ci/push_key" -d
64-
set -x
65-
chmod 600 "${TRAVIS_BUILD_DIR}/.ci/push_key"
66-
eval `ssh-agent -s`
67-
ssh-add "${TRAVIS_BUILD_DIR}/.ci/push_key"
68-
69-
git push "${SSH_REPO}" "${TARGET_BRANCH}"
70-
rm "${TRAVIS_BUILD_DIR}/.ci/push_key"
71-
72-
cd "${TRAVIS_BUILD_DIR}"
73-
rm -rf docs/gh-pages

.ci/travis-build-wheels.sh

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
set -e -x
44

55

6-
if [ "${TRAVIS_BRANCH}" != "releases" -o "${BUILD}" != "full" ]; then
6+
if [[ "${TRAVIS_BRANCH}" != "releases" || "${BUILD}" != *wheels* ]]; then
77
# Not a release
88
exit 0
99
fi
@@ -37,29 +37,23 @@ _upload_wheels() {
3737

3838

3939
if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
40-
ML_PYTHON_VERSION=$(python3 -c "import sys; \
41-
print('cp{maj}{min}-cp{maj}{min}m'.format( \
42-
maj=sys.version_info.major, min=sys.version_info.minor))")
43-
44-
PYTHON_VERSION=$(python3 -c "import sys; \
45-
print('{maj}.{min}'.format( \
46-
maj=sys.version_info.major, min=sys.version_info.minor))")
47-
48-
if [[ "${RELEASE_PYTHON_VERSIONS}" != *"${PYTHON_VERSION}"* ]]; then
49-
echo "Skipping release on Python ${PYTHON_VERSION}."
50-
exit 0
51-
fi
52-
53-
for arch in x86_64 i686; do
54-
ML_IMAGE="quay.io/pypa/manylinux1_${arch}"
55-
docker pull "${ML_IMAGE}"
56-
docker run --rm \
57-
-v "${_root}":/io \
58-
-e "PYMODULE=${PYMODULE}" \
59-
-e "PYTHON_VERSION=${ML_PYTHON_VERSION}" \
60-
"${ML_IMAGE}" /io/.ci/build-manylinux-wheels.sh
61-
62-
_upload_wheels
40+
for pyver in ${RELEASE_PYTHON_VERSIONS}; do
41+
ML_PYTHON_VERSION=$(python3 -c \
42+
"print('cp{maj}{min}-cp{maj}{min}m'.format( \
43+
maj='${pyver}'.split('.')[0], \
44+
min='${pyver}'.split('.')[1]))")
45+
46+
for arch in x86_64 i686; do
47+
ML_IMAGE="quay.io/pypa/manylinux1_${arch}"
48+
docker pull "${ML_IMAGE}"
49+
docker run --rm \
50+
-v "${_root}":/io \
51+
-e "PYMODULE=${PYMODULE}" \
52+
-e "PYTHON_VERSION=${ML_PYTHON_VERSION}" \
53+
"${ML_IMAGE}" /io/.ci/build-manylinux-wheels.sh
54+
55+
_upload_wheels
56+
done
6357
done
6458

6559
elif [ "${TRAVIS_OS_NAME}" == "osx" ]; then

.ci/travis-publish-docs.sh

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/bin/bash
2+
3+
# Based on https://gist.github.com/domenic/ec8b0fc8ab45f39403dd
4+
5+
set -e -x
6+
7+
SOURCE_BRANCH="master"
8+
TARGET_BRANCH="gh-pages"
9+
DOC_BUILD_DIR="_build/html/"
10+
11+
if [ "${TRAVIS_PULL_REQUEST}" != "false" -o -z "${TRAVIS_TAG}" ]; then
12+
echo "Skipping documentation deploy."
13+
exit 0
14+
fi
15+
16+
pip install -r docs/requirements.txt
17+
make htmldocs
18+
19+
git config --global user.email "infra@magic.io"
20+
git config --global user.name "Travis CI"
21+
22+
REPO=$(git config remote.origin.url)
23+
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
24+
COMMITISH=$(git rev-parse --verify HEAD)
25+
AUTHOR=$(git show --format="%aN <%aE>" "${COMMITISH}")
26+
27+
git clone "${REPO}" docs/gh-pages
28+
cd docs/gh-pages
29+
git checkout "${TARGET_BRANCH}" || git checkout --orphan "${TARGET_BRANCH}"
30+
cd ..
31+
32+
rm -r gh-pages/devel/
33+
rsync -a "${DOC_BUILD_DIR}/" gh-pages/devel/
34+
35+
if [ -n "${TRAVIS_TAG}" ]; then
36+
rm -r gh-pages/current/
37+
rsync -a "${DOC_BUILD_DIR}/" gh-pages/current/
38+
fi
39+
40+
cd gh-pages
41+
42+
if git diff --quiet --exit-code; then
43+
echo "No changes to documentation."
44+
exit 0
45+
fi
46+
47+
git add --all .
48+
git commit -m "Automatic documentation update" --author="${AUTHOR}"
49+
50+
set +x
51+
echo "Decrypting push key..."
52+
ENCRYPTED_KEY_VAR="encrypted_${DOCS_PUSH_KEY_LABEL}_key"
53+
ENCRYPTED_IV_VAR="encrypted_${DOCS_PUSH_KEY_LABEL}_iv"
54+
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
55+
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
56+
openssl aes-256-cbc -K "${ENCRYPTED_KEY}" -iv "${ENCRYPTED_IV}" \
57+
-in "${TRAVIS_BUILD_DIR}/.ci/push_key.enc" \
58+
-out "${TRAVIS_BUILD_DIR}/.ci/push_key" -d
59+
set -x
60+
chmod 600 "${TRAVIS_BUILD_DIR}/.ci/push_key"
61+
eval `ssh-agent -s`
62+
ssh-add "${TRAVIS_BUILD_DIR}/.ci/push_key"
63+
64+
git push "${SSH_REPO}" "${TARGET_BRANCH}"
65+
rm "${TRAVIS_BUILD_DIR}/.ci/push_key"
66+
67+
cd "${TRAVIS_BUILD_DIR}"
68+
rm -rf docs/gh-pages

.ci/travis-release.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ release_platforms=(
2626
"win_amd64"
2727
)
2828

29-
P="asyncpg-${PACKAGE_VERSION}"
29+
P="${PYMODULE}-${PACKAGE_VERSION}"
3030
expected_wheels=()
3131

3232
for pyver in ${RELEASE_PYTHON_VERSIONS}; do
@@ -51,3 +51,5 @@ for distfile in "${expected_wheels[@]}"; do
5151
done
5252

5353
python -m twine upload dist/*.whl dist/*.tar.*
54+
55+
.ci/travis-publish-docs.sh

.ci/travis-tests.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
set -e -x
44

5-
if [ "${BUILD}" != "quick" -a "${BUILD}" != "full" ]; then
5+
if [[ "${BUILD}" != *tests* ]]; then
66
echo "Skipping tests."
77
exit 0
88
fi
@@ -13,7 +13,7 @@ if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
1313
eval "$(pyenv init -)"
1414
fi
1515

16-
if [ "${BUILD}" == "quick" ]; then
16+
if [[ "${BUILD}" == *quicktests* ]]; then
1717
make && make quicktest
1818
else
1919
make && make test

.travis.yml

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,40 @@ language: generic
33
env:
44
global:
55
- PYMODULE=asyncpg
6-
- RELEASE_PYTHON_VERSIONS="3.5"
6+
- RELEASE_PYTHON_VERSIONS="3.5 3.6"
77

88
- S3_UPLOAD_USERNAME=oss-ci-bot
99
- S3_UPLOAD_BUCKET=magicstack-oss-releases
10+
# S3_UPLOAD_ACCESSKEY:
1011
- secure: "iU37gukuyeaYM69StkR/aUTNgolblBdw2is034evvrm/SG0bKyzVVSrcK/dts9jolkCxJi+01VfpzxIBu2PF11QnCN1exUILb+XfmR+dVxUnNY2M1qqjILHvQ92rFJ9f2TlbYa2AlwgKynZlY4+edVSACSWwD/+TbWGAQEp0WInalA8ohljir+EPueXaYyC8mmH55cNQIa5WdDA2Vpg5ahRDdhVyD2J+/fLg78syLV7FGlnpXtASo9XiQKmRpPyHIT23yQB444kVh9xcjvuiB3aUBP5bGC2H4unElGYhCvfQvb1GoWvDqyvfzZvTOjlHqnG4AvIPoSCgEu/9cu8Cm/9OxWtqtWy7dECM8ZUIlOi3oPcvwUYDpNYAdATbTr1T6FRCBEp2eOi3sKoeE+nUDgQaN4r+ple4BKYnjrsSllXhI5W8ZqDNoUSsoGu+z6GFn6Dszrj6jbq8JHV4mZT9RCfR1y6inXWYGmaNRlwzm8wPHTav2RbW2O6bbwkkATWwYpyRB2FRlwMX6BB06druZWNOzx09RS8pTHnqcKOXW2mENNMgrA03OJUEV30UG/ncLZELYTpBARSJwymxjmmTK7vEI/HfxHkPrKcLLPPn2GoWym7mF2Lkh+jp81FkCGYrLTquyKPaoeUsofYukWMbGwE99ePL5dLocVDqTzatAoU="
12+
# S3_UPLOAD_SECRET:
1113
- secure: "uCcM67fmT3ODhaHrUKhuid/DJZzy9aMtaVdRCkAkjaF/X0Dgj1Dq9bV/PPLn+HjVIRiloHKK4fk6eMLmnI/PWPnTD7hVYse2ECLEeTxZGtoBmTdBPzdf1+aHpl18o8xbN/XfO02SVk6pTHDSjZIwR8ZeiZ2Q75aY462BW9WBgV0JOL9xK5yJd3TjODsDJpwcK0P4TMwi1j2qKIpXMUJaZkyUPafZIykil2CbcePd2Y5AUfDN2BAqaJZqM9vVCeRRs7ECzCamBPsj2WUmXqs621IH3Ml/sSONCzeQoUlgUsG2a7b+Jic92sVsFHyLVqG56G5urIAsXm+Jc/8Ly/dTk1M3ER/OdvsB0z21mhQfaVHwROixPk6HPCbvTl3PITEauaU+wLwCIduiEbb6fcpoB11n3oRzgiLY5e4+QDA86LBNySDhBE8WIq1VKphgTp7ojgM/mHJg4VBZX3m+89JruUOLi49VPx1cK/CiWEBj3gWHZMNDL9agS5N/fwl6UnD5DAklTZtqlA5M2FZ8/aPN8/FgW4jTEgBBU87Ko2rTvVRmKZeCVEkIBS2lYsRDTG3ZmlyJuh2AGGReUzCh524pNAsonIF2ydCOzLv4DlTZSthOwbdnX0EMBRYuPEa436dgkVUUVP6ds5859IPZeXcN6JKJWPWQkzFWFwzoK9ttQLc="
14+
1215
- TWINE_USERNAME: magicstack-ci
16+
# TWINE_PASSWORD:
1317
- secure: "jyc9xHK3VjGPxvBZKx8Mcf5nfVvfIyGn6b4atcrmwVdJsV1bBLdKoAjUX3RGjNGyAHpNYOEKOdNfeZs+Wziwg5NK7ucC5qybaBK3MOTEOInCzaO0QJpcxThaHBQkkDxVtn8Qu1Gk3S/hXcXWjT2UEYJvQ84diaXn/XYRxfzOYTZX8eUroAWOMnUCYxlPxGzXTAtmuQSiJkL7P7veZTsWsGCOHtCpdAx7dgGb113CD8QheeUoZlH9Ml6jd3fGFteYmuFp7cR6fa3VYVzxp5BFsdEJqSI4VqDvBOpUoLkbpRRKMjosHKtphfi0PAzbkJw6UdKcrqQ/Ca4nGmWk0PIf3LTsJrv44p4ZTPVI8b3lihXMm72QUE28e11yu9SIZRe0hMgmvWlivXEJw3C3YT1N5w+JM3Y5dIWp/YLoiRXVkIzNJQMN3YeWvKEFf/xO1AD2BO3jjU9oBZfKQpxCJ58gPsQrRt6qM3Y6zYuF8s4B+llpwM/ex2xnNwrTbNkp4ARyXyCujX+ixhjiBLtElfGoHPP1jOaIkJhGje9DxaptddfFBDLAdq0/3Q+LHOmwdQcH5+libUy3HnyP7jf51kjjWE3XEJGSchHI2ewEAn9UZRH8h0UNRXutBzUVvKgC6K1lUvqzEreKVxvrYe6zgbZc/DiUvLgIzJBiJgP9rdZYpDQ="
18+
1419
- DOCS_PUSH_KEY_LABEL=0760b951e99c
1520

1621
matrix:
1722
fast_finish: true
1823

1924
include:
2025
- os: osx
21-
# Travis macOS env does not support Python yet,
22-
# so we have to set things up manually in install.sh.
23-
env: BUILD=full PYTHON_VERSION=3.5.2 PIP_USER=1
26+
env: BUILD=tests,wheels PYTHON_VERSION=3.5.2 PIP_USER=1
27+
28+
- os: osx
29+
env: BUILD=tests,wheels PYTHON_VERSION=3.6.0 PIP_USER=1
2430

31+
# Do quick test runs for each supported version of PostgreSQL
32+
# minus the latest.
2533
- os: linux
2634
dist: precise
2735
sudo: false
2836
language: python
2937
python: "3.5"
3038
services: postgresql
31-
env: BUILD=quick PGVERSION=9.1
39+
env: BUILD=quicktests PGVERSION=9.1
3240
addons:
3341
postgresql: '9.1'
3442

@@ -38,7 +46,7 @@ matrix:
3846
language: python
3947
python: "3.5"
4048
services: postgresql
41-
env: BUILD=quick PGVERSION=9.2
49+
env: BUILD=quicktests PGVERSION=9.2
4250
addons:
4351
postgresql: '9.2'
4452

@@ -48,7 +56,7 @@ matrix:
4856
language: python
4957
python: "3.5"
5058
services: postgresql
51-
env: BUILD=quick PGVERSION=9.3
59+
env: BUILD=quicktests PGVERSION=9.3
5260
addons:
5361
postgresql: '9.3'
5462

@@ -58,7 +66,7 @@ matrix:
5866
language: python
5967
python: "3.5"
6068
services: postgresql
61-
env: BUILD=quick PGVERSION=9.4
69+
env: BUILD=quicktests PGVERSION=9.4
6270
addons:
6371
postgresql: '9.4'
6472

@@ -68,40 +76,48 @@ matrix:
6876
language: python
6977
python: "3.5"
7078
services: postgresql
71-
env: BUILD=quick PGVERSION=9.5
79+
env: BUILD=quicktests PGVERSION=9.5
7280
addons:
7381
postgresql: '9.5'
7482

83+
# Do a full test run on the latest supported version of PostgreSQL
84+
# on each supported version of Python.
7585
- os: linux
7686
dist: trusty
7787
sudo: false
7888
language: python
7989
python: "3.5"
80-
env: BUILD=docs RELEASE=1 # Use this config to publish releases
90+
services: postgresql
91+
env: BUILD=tests PGVERSION=9.6
92+
addons:
93+
postgresql: '9.6'
8194

8295
- os: linux
8396
dist: trusty
84-
sudo: required
97+
sudo: false
8598
language: python
86-
python: "3.5"
87-
env: BUILD=full PGVERSION=9.6
88-
services: [postgresql, docker]
99+
python: "3.6-dev"
100+
services: postgresql
101+
env: BUILD=tests PGVERSION=9.6
89102
addons:
90103
postgresql: '9.6'
91104

105+
# Build manylinux wheels. Each wheel will be tested,
106+
# so there is no need for BUILD=tests here.
107+
# Also use this job to publish the releases and build
108+
# the documentation.
92109
- os: linux
93110
dist: trusty
94111
sudo: required
95112
language: python
96-
python: "3.6-dev"
97-
env: BUILD=full PGVERSION=9.6
113+
python: "3.5"
114+
env: BUILD=wheels,docs,release PGVERSION=9.6
98115
services: [postgresql, docker]
99116
addons:
100117
postgresql: '9.6'
101118

102119
cache:
103-
directories:
104-
- $HOME/.cache/pip
120+
pip
105121

106122
before_install:
107123
- .ci/travis-before-install.sh
@@ -119,4 +135,4 @@ deploy:
119135
script: .ci/travis-release.sh
120136
on:
121137
tags: true
122-
condition: '-n "${RELEASE}"'
138+
condition: '"${BUILD}" == *release*'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
if sys.version_info < (3, 5):
2020
raise RuntimeError('asyncpg requires Python 3.5 or greater')
2121

22-
VERSION = '0.8.1'
22+
VERSION = '0.8.2'
2323
CFLAGS = ['-O2']
2424
LDFLAGS = []
2525

0 commit comments

Comments
 (0)