reduce version duplication #15
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: | |
- main | |
release: | |
types: | |
- published | |
jobs: | |
build_wheels_windows: | |
name: Build wheel on ${{ matrix.os }}/auto/${{matrix.python_tag}} | |
runs-on: windows-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [auto32, auto64] | |
python_tag: ["cp36-*", "cp37-*", "cp38-*", "cp39-*", "cp310-*", "pp37-*", "pp38-*"] | |
exclude: | |
# PyPy only supports x86_64 on Windows | |
- arch: auto32 | |
python_tag: "pp37-*" | |
- arch: auto32 | |
python_tag: "pp38-*" | |
# PyPy Windows is currently broken in scikit-build | |
- arch: auto64 | |
python_tag: "pp37-*" | |
- arch: auto64 | |
python_tag: "pp38-*" | |
env: | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v2 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
with: | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
path: ./wheelhouse/*.whl | |
build_wheels_macos: | |
name: Build wheel on ${{ matrix.os }}/auto/${{matrix.python_tag}} | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
arch: [x86_64, arm64, universal2] | |
python_tag: ["cp36-*", "cp37-*", "cp38-*", "cp39-*", "cp310-*"] | |
exclude: | |
# MacOS Arm only supported since Python 3.8 | |
- arch: arm64 | |
python_tag: "cp36-*" | |
- arch: arm64 | |
python_tag: "cp37-*" | |
- arch: universal2 | |
python_tag: "cp36-*" | |
- arch: universal2 | |
python_tag: "cp37-*" | |
env: | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v2 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
with: | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
path: ./wheelhouse/*.whl | |
build_wheels_linux: | |
name: Build wheels on ubuntu-latest/${{matrix.arch}}/${{matrix.python_tag}} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# disable s390x and ppc64le wheels while they are not provided by numpy | |
# arch: [auto, aarch64, ppc64le, s390x] | |
arch: [auto, aarch64] | |
python_tag: [ "cp36-*", "cp37-*", "cp38-*", "cp39-*", "cp310-*", "pp37-*", "pp38-*"] | |
env: | |
CIBW_ARCHS_LINUX: ${{matrix.arch}} | |
CIBW_BUILD: ${{matrix.python_tag}} | |
CIBW_SKIP: "*musllinux_*" | |
CIBW_TEST_SKIP: "*-manylinux_{aarch64,ppc64le,s390x}" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest {package}/tests | |
CIBW_BUILD_VERBOSITY: 3 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v2 | |
- uses: docker/setup-qemu-action@v1 | |
name: Set up QEMU | |
- name: Build wheel | |
uses: pypa/[email protected] | |
with: | |
output-dir: wheelhouse | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
path: ./wheelhouse/*.whl | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'true' | |
- uses: actions/setup-python@v2 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install Cython==3.0.0b02 | |
# The cythonized files allow installation from the sdist without cython | |
- name: Generate cython | |
run: | | |
chmod +x ./src/cython/generate.sh | |
./src/cython/generate.sh | |
- name: Build sdist | |
run: | | |
pip3 install build; python3 -m build --sdist | |
# test whether tarball contains all files required for compiling | |
pip3 install dist/cydifflib-*.tar.gz | |
pip3 uninstall cydifflib --yes | |
- uses: actions/upload-artifact@v2 | |
with: | |
path: dist/*.tar.gz | |
deploy-wheels: | |
if: github.event_name == 'release' && github.event.action == 'published' | |
needs: [build_wheels_windows, build_wheels_macos, build_wheels_linux, build_sdist] | |
name: deploy wheels to pypi | |
runs-on: ubuntu-18.04 | |
steps: | |
- uses: actions/download-artifact@v2 | |
with: | |
name: artifact | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@master | |
with: | |
user: __token__ | |
password: ${{ secrets.pypi_password }} |