Run tests and build wheels. #69
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: Run tests and build wheels. | |
on: [ workflow_dispatch ] | |
jobs: | |
linux: | |
name: Linux | |
strategy: | |
matrix: | |
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install dev packages | |
run: | | |
python -m pip install wheel | |
python -m pip install .[dev] | |
- name: Run tests | |
env: | |
DONT_SAVE_RESULT: 1 | |
run: | | |
pytest --benchmark-skip -vv | |
- name: Build sdist | |
if: ${{ matrix.python-version == '3.12' }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
maturin-version: latest | |
command: sdist | |
before-script-linux: rm -rf ".github" "tests" ".gitignore" | |
args: --out dist | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
maturin-version: latest | |
target: x86_64 | |
manylinux: auto | |
args: --release --strip --out dist -i ${{ matrix.python-version }} | |
- name: Install wheel | |
run: | | |
cd dist | |
python -m pip install cykooz.resizer --no-index --find-links ./ --force-reinstall | |
python -c "import cykooz.resizer" | |
cd .. | |
- name: Upload sdist and wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_lin-${{ matrix.python-version }} | |
path: dist | |
windows: | |
name: Windows | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: "x64" | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: "x86_64-pc-windows-msvc" | |
- name: Install dev packages | |
run: | | |
python -m pip install wheel | |
python -m pip install .[dev] | |
- name: Run tests | |
env: | |
DONT_SAVE_RESULT: 1 | |
run: | | |
pytest --benchmark-skip -vv | |
- name: Build wheel | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: "x86_64-pc-windows-msvc" | |
args: --release --strip --out dist -i python | |
- name: Install built wheel | |
run: | | |
cd dist | |
python -m pip install cykooz.resizer --no-index --find-links . --force-reinstall | |
python -c "import cykooz.resizer" | |
cd .. | |
- name: Upload wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_win-${{ matrix.python-version }} | |
path: dist | |
macos: | |
name: MacOS | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Rust toolchain x86_64 | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: "x86_64-apple-darwin" | |
- name: Install Rust toolchain aarch64 | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
target: "aarch64-apple-darwin" | |
- name: Install dev packages | |
run: | | |
python -m pip install wheel | |
python -m pip install .[dev] | |
- name: Run tests | |
env: | |
DONT_SAVE_RESULT: 1 | |
run: | | |
pytest --benchmark-skip -vv | |
- name: Build wheels - x86_64 | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: "x86_64-apple-darwin" | |
args: --release --strip --out dist -i python | |
- name: Build wheels - aarch64 | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: "aarch64-apple-darwin" | |
args: --release --strip --out dist -i python | |
- name: Install built wheel | |
run: | | |
cd dist | |
python -m pip install cykooz.resizer --find-links . --force-reinstall | |
python -c "import cykooz.resizer" | |
cd .. | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels_mac-${{ matrix.python-version }} | |
path: dist | |
wheels: | |
runs-on: ubuntu-latest | |
needs: [ linux, windows, macos ] | |
steps: | |
- name: Merge Artifacts | |
uses: actions/upload-artifact/merge@v4 | |
with: | |
name: wheels | |
delete-merged: true |