diff --git a/README.md b/README.md index 818d2a32..ae2800a0 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ after_success: - if [[ $TRAVIS_TAG ]]; then python -m twine upload wheelhouse/*.whl; fi ``` -For more information, including how to build on Appveyor, Azure, CircleCI, check out the [documentation](https://cibuildwheel.readthedocs.org). +For more information, including how to build on Appveyor, Azure, CircleCI, check out the [documentation](https://cibuildwheel.readthedocs.org) and also check out [the examples](https://github.com/joerick/cibuildwheel/tree/master/examples). Options ------- diff --git a/examples/travis-ci-deploy-only.yml b/examples/travis-ci-deploy-only.yml new file mode 100644 index 00000000..e0ace8d9 --- /dev/null +++ b/examples/travis-ci-deploy-only.yml @@ -0,0 +1,34 @@ +# As written, this configuration will build your wheels on every +# commit, but will only push to PyPI on tagged commits. + +language: python + +jobs: + include: + # perform a linux build + - services: docker + # and a mac build + - os: osx + language: shell + # and a windows build + - os: windows + language: shell + before_install: + - choco install python --version 3.8.0 + - export PATH="/c/Python38:/c/Python38/Scripts:$PATH" + +env: + global: + - TWINE_USERNAME=joerick + # Note: TWINE_PASSWORD is set in Travis settings + +install: + - python -m pip install twine cibuildwheel==1.0.0 + +script: + # build the wheels, put them into './wheelhouse' + - python -m cibuildwheel --output-dir wheelhouse + +after_success: + # if the release was tagged, upload them to PyPI + - if [[ $TRAVIS_TAG ]]; then python -m twine upload wheelhouse/*.whl; fi diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml new file mode 100644 index 00000000..9a31da96 --- /dev/null +++ b/examples/travis-ci-test-and-deploy.yml @@ -0,0 +1,77 @@ +# In this configuration, the package is tested against multiple versions of python +# on Linux and on one version of Python on Windows. If and only if all tests pass +# will the wheels be built and deployed. Further, deployment is only initiated if +# the current branch is "master", the current commit is tagged, and the current +# repo is yours (e.g. it won't run on a Pull Request). For convenience, a source +# distribution is also created. + +language: python +python: + - 3.5 + - 3.6 + - 3.7 + - 3.8 + +before_install: + - | + if [[ "$TRAVIS_OS_NAME" = windows ]]; then + choco install python --version 3.8.0 + export PATH="/c/Python38:/c/Python38/Scripts:$PATH" + fi + +install: + - python -m pip install pytest + +script: + - python setup.py install + - pytest + +stages: + - test + # Only execute deployment stage on master branch, tagged commits, + # and from your repository (e.g. not PRs). Replace with your repo name. + - name: deploy + if: branch = master AND tag IS PRESENT AND repo = joerick/cibuildwheel + +jobs: + include: + # Optional: run a test on Windows + - os: windows + language: shell + name: Test on Windows + + # Deploy source distribution + - stage: deploy + name: Deploy source distribution + install: skip + script: python setup.py sdist --formats=gztar + after_success: python -m twine upload --skip-existing dist/*.tar.gz + # Deploy on linux + - stage: deploy + name: Build and deploy Linux wheels + services: docker + install: python -m pip install twine cibuildwheel==1.0.0 + script: python -m cibuildwheel --output-dir wheelhouse + after_success: python -m twine upload --skip-existing wheelhouse/*.whl + # Deploy on mac + - stage: deploy + name: Build and deploy macOS wheels + os: osx + language: shell + install: python -m pip install twine cibuildwheel==1.0.0 + script: python -m cibuildwheel --output-dir wheelhouse + after_success: python -m twine upload --skip-existing wheelhouse/*.whl + # Deploy on windows + - stage: deploy + name: Build and deploy Windows wheels + os: windows + language: shell + install: python -m pip install twine cibuildwheel==1.0.0 + script: python -m cibuildwheel --output-dir wheelhouse + after_success: python -m twine upload --skip-existing wheelhouse/*.whl + +env: + global: + - TWINE_USERNAME=joerick + # Note: TWINE_PASSWORD is set in Travis settings +