Skip to content

Commit

Permalink
Update publish.yml to build wheels using PyO3/maturin-action
Browse files Browse the repository at this point in the history
  • Loading branch information
althonos committed Nov 5, 2024
1 parent 6e9631e commit 79138b7
Showing 1 changed file with 130 additions and 186 deletions.
316 changes: 130 additions & 186 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,217 +9,152 @@ jobs:

wheel-linux-aarch64:
name: Build Linux wheels (Aarch64)
runs-on: ubuntu-20.04
strategy:
matrix:
python-tag:
- cp37-manylinux_aarch64
- cp38-manylinux_aarch64
- cp39-manylinux_aarch64
- cp310-manylinux_aarch64
- cp311-manylinux_aarch64
- cp312-manylinux_aarch64
- pp37-manylinux_aarch64
- pp38-manylinux_aarch64
- pp39-manylinux_aarch64
- pp310-manylinux_aarch64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v2
with:
platforms: all
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: aarch64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
# CIBW_TEST_COMMAND: python -m unittest pyskani.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: aarch64
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-manylinux_aarch64
path: dist

wheel-linux-x86_64:
name: Build Linux wheels (x86-64)
runs-on: ubuntu-20.04
strategy:
matrix:
python-tag:
- cp37-manylinux_x86_64
- cp38-manylinux_x86_64
- cp39-manylinux_x86_64
- cp310-manylinux_x86_64
- cp311-manylinux_x86_64
- cp312-manylinux_x86_64
- pp37-manylinux_x86_64
- pp38-manylinux_x86_64
- pp39-manylinux_x86_64
- pp310-manylinux_x86_64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
# CIBW_TEST_COMMAND: python -m unittest pyskani.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-manylinux_x86_64
path: dist

wheel-macos-x86_64:
name: Build MacOS wheels (x86-64)
runs-on: macOS-12
strategy:
matrix:
python-tag:
- cp37-macosx_x86_64
- cp38-macosx_x86_64
- cp39-macosx_x86_64
- cp310-macosx_x86_64
- cp311-macosx_x86_64
- cp312-macosx_x86_64
- pp37-macosx_x86_64
- pp38-macosx_x86_64
- pp39-macosx_x86_64
- pp310-macosx_x86_64
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: x86_64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
# CIBW_TEST_COMMAND: python -m unittest pyskani.tests
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=12.0
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos_x86_64
path: dist

wheel-macos-aarch64:
name: Build MacOS wheels (Aarch64)
runs-on: macOS-11
strategy:
matrix:
python-tag:
- cp38-macosx_arm64
- cp39-macosx_arm64
- cp310-macosx_arm64
- cp311-macosx_arm64
- cp312-macosx_arm64
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
target: aarch64-apple-darwin
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: arm64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_ALL: "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh /dev/stdin -y"
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
CIBW_ENVIRONMENT: CARGO_NET_GIT_FETCH_WITH_CLI=true
# CIBW_TEST_COMMAND: python -m unittest pyskani.tests
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=12.0
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: aarch64
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos_aarch64
path: dist

wheel-win32-x86_64:
name: Build Windows wheels (x86-64)
runs-on: windows-2019
strategy:
matrix:
python-tag:
- cp37-win_amd64
- cp38-win_amd64
- cp39-win_amd64
- cp310-win_amd64
- cp311-win_amd64
- cp312-win_amd64
- pp37-win_amd64
- pp38-win_amd64
- pp39-win_amd64
- pp310-win_amd64
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build manylinux wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: AMD64
CIBW_BUILD: ${{ matrix.python-tag }}
CIBW_BEFORE_BUILD: "pip install setuptools-rust"
CIBW_BUILD_VERBOSITY: 2
# CIBW_TEST_COMMAND: python -m unittest pyskani.tests
with:
output-dir: dist
- uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: x64
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-win32_x86_64
path: dist

sdist:
runs-on: ubuntu-latest
name: Build source distribution
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.11
uses: actions/setup-python@v2
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: 3.11
python-version: "3.13"
- name: Install CI requirements
run: python -m pip install -U -r .github/workflows/requirements.txt
- name: Build source distribution without vendored sources
run: python setup.py sdist
- name: Store built source distribution
uses: actions/upload-artifact@v2
run: python -m maturin sdist -o dist
- uses: actions/upload-artifact@v4
with:
name: wheels
name: sdist
path: dist/*

test-sdist:
runs-on: ubuntu-latest
name: Test source distribution
needs:
- sdist
steps:
- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Download source distribution
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Update pip to latest version
run: python -m pip install -U pip setuptools wheel
- name: Install built wheel
run: python -m pip install --no-binary pyskani --find-links=dist pyskani
- name: Run tests without coverage
run: python -m unittest pyskani.tests -vv

upload:
environment: PyPI
runs-on: ubuntu-latest
Expand All @@ -228,17 +163,25 @@ jobs:
id-token: write
needs:
- sdist
- test-sdist
- wheel-linux-aarch64
- wheel-linux-x86_64
- wheel-macos-aarch64
- wheel-macos-x86_64
- wheel-win32-x86_64
steps:
- name: Download built wheels
uses: actions/download-artifact@v2
with:
name: wheels
path: dist
- name: Download source distribution
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
merge-multiple: true
- name: Download wheel distributions
uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist/
merge-multiple: true
- name: Publish distributions to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
Expand All @@ -249,11 +192,12 @@ jobs:
if: "!contains(github.ref, 'rc')"
name: Release
needs: upload
permissions: write-all
steps:
- name: Checkout code
uses: actions/checkout@v1
uses: actions/checkout@v4
- name: Release a Changelog
uses: rasmus-saks/release-a-changelog-action@v1.0.1
uses: rasmus-saks/release-a-changelog-action@v1.2.0
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'

Expand Down

0 comments on commit 79138b7

Please sign in to comment.