v2.2.0 #36
Workflow file for this run
This file contains hidden or 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 and Publish | |
| on: | |
| release: | |
| types: [published] | |
| jobs: | |
| # Build wheels on Linux using manylinux container | |
| build-linux: | |
| name: Build Linux wheels | |
| runs-on: ubuntu-latest | |
| container: quay.io/pypa/manylinux_2_28_x86_64 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| dnf install -y openssl-devel perl-IPC-Cmd | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path | |
| /opt/python/cp312-cp312/bin/pip install maturin | |
| - name: Build wheels | |
| run: | | |
| export PATH="$HOME/.cargo/bin:$PATH" | |
| for pyver in 39 310 311 312; do | |
| pybin="/opt/python/cp${pyver}-cp${pyver}/bin/python" | |
| if [ -f "$pybin" ]; then | |
| /opt/python/cp312-cp312/bin/maturin build --release --out dist -i "$pybin" --features extension-module | |
| fi | |
| done | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-linux-x86_64 | |
| path: dist/*.whl | |
| # Build wheels on macOS ARM64 (native build) | |
| # Note: macOS x86_64 skipped - Intel runners retired, users can install from sdist | |
| build-macos-arm: | |
| name: Build macOS ARM64 wheels | |
| runs-on: macos-14 | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install maturin | |
| run: pip install maturin | |
| - name: Build wheel | |
| run: maturin build --release --out dist --features extension-module | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-macos-arm64-py${{ matrix.python-version }} | |
| path: dist/*.whl | |
| # Build wheels on Windows | |
| build-windows: | |
| name: Build Windows wheels | |
| runs-on: windows-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install maturin | |
| run: pip install maturin | |
| - name: Build wheel | |
| run: maturin build --release --out dist --features extension-module | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-windows-py${{ matrix.python-version }} | |
| path: dist/*.whl | |
| # Build source distribution | |
| build-sdist: | |
| name: Build source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install maturin | |
| run: pip install maturin | |
| - name: Build sdist | |
| run: maturin sdist --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: sdist | |
| path: dist/*.tar.gz | |
| # Publish to PyPI | |
| publish: | |
| name: Publish to PyPI | |
| needs: [build-linux, build-macos-arm, build-windows, build-sdist] | |
| runs-on: ubuntu-latest | |
| environment: pypi | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: dist | |
| merge-multiple: true | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |