Update pypi workflow #119
Workflow file for this run
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: pypi | |
on: | |
workflow_dispatch: | |
push: | |
tags: | |
- "*" | |
jobs: | |
build_linux_wheels: | |
name: Build ${{ matrix.linux_tag }} wheels with cp${{ matrix.python-version }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
linux_tag: ["manylinux", "musllinux"] | |
python-version: ["310", "311", "312", "313"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: all | |
- name: Build wheels | |
uses: pypa/[email protected] | |
timeout-minutes: 720 | |
env: | |
CIBW_BUILD: "cp${{ matrix.python-version }}-${{ matrix.linux_tag }}_*" | |
CIBW_ARCHS_LINUX: "x86_64 i686 aarch64" | |
CIBW_SKIP: "*-musllinux_i686" | |
CIBW_MANYLINUX_X86_64_IMAGE: "manylinux2014" | |
CIBW_MANYLINUX_I686_IMAGE: "manylinux2014" | |
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux2014" | |
CIBW_MUSLLINUX_X86_64_IMAGE: "musllinux_1_1" | |
CIBW_MUSLLINUX_I686_IMAGE: "musllinux_1_1" | |
CIBW_MUSLLINUX_AARCH64_IMAGE: "musllinux_1_1" | |
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"' | |
CIBW_ENVIRONMENT_LINUX: 'PATH="$HOME/.cargo/bin:$PATH" CARGO_NET_GIT_FETCH_WITH_CLI="true"' | |
CIBW_BEFORE_BUILD: > | |
rustup default nightly && | |
rustup show | |
CIBW_BEFORE_BUILD_LINUX: > | |
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=nightly --profile=minimal -y && | |
rustup show | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.linux_tag }}-cp${{ matrix.python-version }} | |
path: ./wheelhouse/*.whl | |
build_macos_wheels: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-13, macos-14] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
- run: rustup target add aarch64-apple-darwin && rustup target add x86_64-apple-darwin | |
- name: Build wheels | |
uses: pypa/[email protected] | |
timeout-minutes: 720 | |
env: | |
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*" | |
CIBW_ARCHS_MACOS: "universal2" | |
# arm64 and universal2 wheels are tagged with x86_64 because there's an issue with Poetry | |
# More information here: https://cibuildwheel.readthedocs.io/en/stable/faq/#how-to-cross-compile (CTRL + F "poetry") | |
# https://github.com/pypa/cibuildwheel/issues/1415 | |
CIBW_REPAIR_WHEEL_COMMAND_MACOS: > | |
ls {dest_dir} && | |
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} && | |
for file in {dest_dir}/*.whl ; do mv $file ${file//x86_64/universal2} ; done | |
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"' | |
CIBW_BEFORE_BUILD: > | |
rustup default nightly && | |
rustup show | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.os }} | |
path: ./wheelhouse/*.whl | |
build_windows_wheels: | |
name: Build wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-2019, windows-2022] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
toolchain: nightly | |
- run: rustup toolchain install stable-i686-pc-windows-msvc | |
- run: rustup target add i686-pc-windows-msvc | |
- name: Build wheels | |
uses: pypa/[email protected] | |
timeout-minutes: 720 | |
env: | |
CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-*" | |
CIBW_ARCHS_WINDOWS: "AMD64 x86" | |
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH"' | |
CIBW_ENVIRONMENT_WINDOWS: 'PATH="$UserProfile\.cargo\bin;$PATH"' | |
CIBW_BEFORE_BUILD: > | |
rustup default nightly && | |
rustup show | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.os }} | |
path: ./wheelhouse/*.whl | |
build_sdist: | |
name: Build source distribution | |
# Can't use more than 12 jobs in parallel | |
needs: [build_macos_wheels] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build River | |
uses: ./.github/actions/install-env | |
with: | |
python-version: "3.13" | |
- name: Build dist | |
run: poetry build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist/*.tar.gz | |
merge_artifacts: | |
runs-on: ubuntu-latest | |
needs: [build_linux_wheels, build_macos_wheels, build_windows_wheels, build_sdist] | |
steps: | |
- name: Merge Artifacts | |
uses: actions/upload-artifact/merge@v4 | |
with: | |
name: artifact | |
pattern: artifact-* | |
upload_pypi: | |
needs: merge_artifacts | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
with: | |
name: artifact | |
path: dist | |
- uses: pypa/[email protected] | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} |