From 30dc67a45b5e69600b4a14fbba663fcdf2dbc5eb Mon Sep 17 00:00:00 2001 From: Kyle Barron Date: Fri, 28 Feb 2025 11:03:37 -0500 Subject: [PATCH 1/3] Python wheels on CI --- .github/workflows/python-wheels.yml | 211 ++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 .github/workflows/python-wheels.yml diff --git a/.github/workflows/python-wheels.yml b/.github/workflows/python-wheels.yml new file mode 100644 index 0000000..2dda580 --- /dev/null +++ b/.github/workflows/python-wheels.yml @@ -0,0 +1,211 @@ +# This file is (mostly) autogenerated by maturin v1.7.1 +# To update, run +# +# maturin generate-ci github -m python/Cargo.toml +# +name: Build wheels + +on: + push: + tags: + - "py-v*" + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + linux: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: ubuntu-latest + target: x86_64 + manylinux: auto + - runner: ubuntu-latest + target: x86 + manylinux: auto + - runner: ubuntu-latest + target: aarch64 + manylinux: "2_24" + - runner: ubuntu-latest + target: armv7 + manylinux: auto + - runner: ubuntu-latest + target: s390x + manylinux: auto + - runner: ubuntu-latest + target: ppc64le + manylinux: auto + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + version: "0.5.x" + + - name: Install Python versions + run: uv python install 3.9 3.10 3.11 3.12 3.13 pypy3.10 + + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.9 -i 3.10 -i 3.11 -i 3.12 -i 3.13 -i pypy3.10 --manifest-path python/Cargo.toml + sccache: "true" + manylinux: ${{ matrix.platform.manylinux }} + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-linux-${{ matrix.platform.target }} + path: dist + + musllinux: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + version: "0.5.x" + + - name: Install Python versions + run: uv python install 3.9 3.10 3.11 3.12 3.13 pypy3.10 + + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.9 -i 3.10 -i 3.11 -i 3.12 -i 3.13 -i pypy3.10 --manifest-path python/Cargo.toml + sccache: "true" + manylinux: musllinux_1_2 + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-musllinux-${{ matrix.platform.target }} + path: dist + + windows: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + steps: + - uses: actions/checkout@v4 + # There seem to be linking errors on Windows with the uv-provided Python + # executables, so we use the Python versions provided by github actions + # for now. + # Seems to be this question: https://stackoverflow.com/questions/78557803/python-with-rust-cannot-open-input-file-python3-lib + - uses: actions/setup-python@v5 + with: + python-version: 3.13 + architecture: ${{ matrix.platform.target }} + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.9 -i 3.10 -i 3.11 -i 3.12 -i 3.13 --manifest-path python/Cargo.toml + sccache: "true" + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-windows-${{ matrix.platform.target }} + path: dist + + macos: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-13 + target: x86_64 + - runner: macos-14 + target: aarch64 + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + version: "0.5.x" + + - name: Install Python versions + run: uv python install 3.9 3.10 3.11 3.12 3.13 pypy3.10 + + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.9 -i 3.10 -i 3.11 -i 3.12 -i 3.13 -i pypy3.10 --manifest-path python/Cargo.toml + sccache: "true" + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-macos-${{ matrix.platform.target }} + path: dist + + # sdist: + # runs-on: ubuntu-latest + # strategy: + # matrix: + # steps: + # - uses: actions/checkout@v4 + # - name: Build sdist + # uses: PyO3/maturin-action@v1 + # with: + # command: sdist + # args: --out dist --manifest-path python/Cargo.toml + # - name: Upload sdist + # uses: actions/upload-artifact@v4 + # with: + # name: wheels-sdist + # path: dist + + # release: + # runs-on: ubuntu-latest + # name: Release + # # environment: + # # name: release + # # url: https://pypi.org/p/async-tiff + # # permissions: + # # # IMPORTANT: this permission is mandatory for trusted publishing + # # id-token: write + # if: startsWith(github.ref, 'refs/tags/') + # needs: [linux, musllinux, windows, macos] + # steps: + # - uses: actions/download-artifact@v4 + # with: + # pattern: wheels-* + # merge-multiple: true + # path: dist + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.9 + + # - uses: pypa/gh-action-pypi-publish@release/v1 + # with: + # user: __token__ + # password: ${{ secrets.PYPI_API_TOKEN }} From 80392ae94975362fee164e9634398ae247b68e14 Mon Sep 17 00:00:00 2001 From: Kyle Barron Date: Fri, 28 Feb 2025 11:04:21 -0500 Subject: [PATCH 2/3] run ci --- .github/workflows/python-wheels.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-wheels.yml b/.github/workflows/python-wheels.yml index 2dda580..1b1edb7 100644 --- a/.github/workflows/python-wheels.yml +++ b/.github/workflows/python-wheels.yml @@ -7,9 +7,9 @@ name: Build wheels on: push: - tags: - - "py-v*" - workflow_dispatch: + # tags: + # - "py-v*" + # workflow_dispatch: permissions: contents: read From 611d6d16a486c9d4329f536830875a1affbbc94f Mon Sep 17 00:00:00 2001 From: Kyle Barron Date: Fri, 28 Feb 2025 11:28:58 -0500 Subject: [PATCH 3/3] only run on tags --- .github/workflows/python-wheels.yml | 54 ++++++++++++++--------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/python-wheels.yml b/.github/workflows/python-wheels.yml index 1b1edb7..9a8db9a 100644 --- a/.github/workflows/python-wheels.yml +++ b/.github/workflows/python-wheels.yml @@ -7,9 +7,9 @@ name: Build wheels on: push: - # tags: - # - "py-v*" - # workflow_dispatch: + tags: + - "py-v*" + workflow_dispatch: permissions: contents: read @@ -184,28 +184,28 @@ jobs: # name: wheels-sdist # path: dist - # release: - # runs-on: ubuntu-latest - # name: Release - # # environment: - # # name: release - # # url: https://pypi.org/p/async-tiff - # # permissions: - # # # IMPORTANT: this permission is mandatory for trusted publishing - # # id-token: write - # if: startsWith(github.ref, 'refs/tags/') - # needs: [linux, musllinux, windows, macos] - # steps: - # - uses: actions/download-artifact@v4 - # with: - # pattern: wheels-* - # merge-multiple: true - # path: dist - # - uses: actions/setup-python@v5 - # with: - # python-version: 3.9 + release: + runs-on: ubuntu-latest + name: Release + # environment: + # name: release + # url: https://pypi.org/p/async-tiff + # permissions: + # # IMPORTANT: this permission is mandatory for trusted publishing + # id-token: write + if: startsWith(github.ref, 'refs/tags/') + needs: [linux, musllinux, windows, macos] + steps: + - uses: actions/download-artifact@v4 + with: + pattern: wheels-* + merge-multiple: true + path: dist + - uses: actions/setup-python@v5 + with: + python-version: 3.9 - # - uses: pypa/gh-action-pypi-publish@release/v1 - # with: - # user: __token__ - # password: ${{ secrets.PYPI_API_TOKEN }} + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }}