cibuildwheel auto-deploy to PyPI example
envsection to your
env: global: - TWINE_USERNAME=...your pypi username... # Note: TWINE_PASSWORD is set in Travis settings
install: - python -m pip install twine cibuildwheel==x.y.z
Build in the
script: - python -m cibuildwheel --output-dir wheelhouse
Finally, upload if the build was successful
after_success: - if [[ $TRAVIS_TAG ]]; then python -m twine upload wheelhouse/*.whl; fi
Check this repo's .travis.yml as an example.
In the Travis web UI, go to your project settings and add the environment variable
TWINE_PASSWORD, set to your PyPI password.
Add this env to your appveyor.yml
environment: TWINE_USERNAME: ...your pypi username... # Note: TWINE_PASSWORD is set in Appveyor settings
Add this upload step to the
build_script: - pip install cibuildwheel==x.x.x - cibuildwheel --output-dir wheelhouse - > IF "%APPVEYOR_REPO_TAG%" == "true" ( python -m pip install twine && python -m twine upload wheelhouse/*.whl )
Check this repo's appveyor.yml as an example.
In the Appveyor UI, add your PyPI password as
TWINE_PASSWORD(click Settings > Environment > Add Variable...). Make sure to mark it as private!
On each release
- Bump the version number in
setup.pyand anywhere else it occurs (I use
- Commit these changes, tag that commit, and push to Github (don't forget to push the tag!
git push --tags). Your wheels will start building.
- Locally, build a source distribution with
rm -rf dist && python setup.py sdist
- Upload the source distribution using
twine upload dist/*.tar.gz
Your wheels will build in Travis/Appveyor and push to PyPI when ready.