* Remove macOS build on travis-ci * Remove travis-ci macOS from docs/examples
7.4 KiB
title
| title |
|---|
| Setup |
GitHub Actions [linux/mac/windows] {: #github-actions}
To build Linux, Mac, and Windows wheels using GitHub Actions, create a .github/workflows/build_wheels.yml file in your repo.
!!! tab "Action"
For GitHub Actions, cibuildwheel provides an action you can use. This is
concise and enables easier auto updating via GitHub's Dependabot; see
Automatic updates.
> .github/workflows/build_wheels.yml
```yaml
{% include "../examples/github-minimal.yml" %}
```
You can use `env:` with the action just like you would with `run:`; you can
also use `with:` to set the command line options: `package-dir: .` and
`output-dir: wheelhouse` (those values are the defaults).
!!! tab "pipx" The GitHub Actions runners have pipx installed, so you can easily build in just one line. This is internally how the action works; the main benefit of the action form is easy updates via GitHub's Dependabot.
> .github/workflows/build_wheels.yml
```yaml
name: Build
on: [push, pull_request]
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, windows-2019, macos-10.15]
steps:
- uses: actions/checkout@v2
- name: Build wheels
run: pipx run cibuildwheel==1.11.0
- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl
```
!!! tab "Generic" This is the most generic form using setup-python and pip; it looks the most like the other CI examples. If you want to avoid having setup that takes advantage of GitHub Actions features or pipx being preinstalled, this might appeal to you.
> .github/workflows/build_wheels.yml
```yaml
name: Build
on: [push, pull_request]
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, windows-2019, macos-10.15]
steps:
- uses: actions/checkout@v2
# Used to host cibuildwheel
- uses: actions/setup-python@v2
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==1.11.0
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl
```
Commit this file, and push to GitHub - either to your default branch, or to a PR branch. The build should start automatically.
For more info on this file, check out the docs.
examples/github-deploy.yml extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
Azure Pipelines [linux/mac/windows] {: #azure-pipelines}
To build Linux, Mac, and Windows wheels on Azure Pipelines, create a azure-pipelines.yml file in your repo.
azure-pipelines.yml
{% include "../examples/azure-pipelines-minimal.yml" %}
!!! note
To support Python 3.5 on Windows, make sure to specify the use of {vmImage: 'vs2017-win2016'} on Windows, to ensure the required toolchain is available.
Commit this file, enable building of your repo on Azure Pipelines, and push.
Wheels will be stored for you and available through the Pipelines interface. For more info on this file, check out the docs.
Travis CI [linux/windows] {: #travis-ci}
To build Linux and Windows wheels on Travis CI, create a .travis.yml file in your repo.
.travis.yml
{% include "../examples/travis-ci-minimal.yml" %}
Note that building Windows Python 2.7 wheels on Travis is unsupported unless using a newer compiler via a workaround.
Commit this file, enable building of your repo on Travis CI, and push.
Then setup a deployment method by following the Travis CI deployment docs, or see Delivering to PyPI. For more info on .travis.yml, check out the docs.
examples/travis-ci-deploy.yml extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
AppVeyor [linux/mac/windows] {: #appveyor}
To build Linux, Mac, and Windows wheels on AppVeyor, create an appveyor.yml file in your repo.
appveyor.yml
{% include "../examples/appveyor-minimal.yml" %}
Commit this file, enable building of your repo on AppVeyor, and push.
AppVeyor will store the built wheels for you - you can access them from the project console. Alternatively, you may want to store them in the same place as the Travis CI build. See AppVeyor deployment docs for more info, or see Delivering to PyPI below.
For more info on this config file, check out the docs.
CircleCI [linux/mac] {: #circleci}
To build Linux and Mac wheels on CircleCI, create a .circleci/config.yml file in your repo,
.circleci/config.yml
{% include "../examples/circleci-minimal.yml" %}
Commit this file, enable building of your repo on CircleCI, and push.
!!! note CircleCI doesn't enable free macOS containers for open source by default, but you can ask for access. See here for more information.
CircleCI will store the built wheels for you - you can access them from the project console. Check out the CircleCI docs for more info on this config file.
Gitlab CI [linux] {: #gitlab-ci}
To build Linux wheels on Gitlab CI, create a .gitlab-ci.yml file in your repo,
.gitlab-ci.yml
{% include "../examples/gitlab-minimal.yml" %}
Commit this file, and push to Gitlab. The pipeline should start automatically.
Gitlab will store the built wheels for you - you can access them from the Pipelines view. Check out the Gitlab docs for more info on this config file.
<script> document.addEventListener('DOMContentLoaded', function() { $('.toctree-l2 a, .rst-content h1').each(function(i, el) { var text = $(el).text() var match = text.match(/(.*) \[([a-z/]+)\]/); if (match) { var iconHTML = $.map(match[2].split('/'), function(ident) { switch (ident) { case 'linux': return '' case 'windows': return '' case 'mac': return '' } }).join(' '); $(el).append( $('⚠️ Got an error? Check the FAQ.