Skip to content

Bump actions/download-artifact from 4 to 8 #23

Bump actions/download-artifact from 4 to 8

Bump actions/download-artifact from 4 to 8 #23

Workflow file for this run

name: Build Binary Wheels & Publish to PyPI
on:
push:
branches:
- master
- main
- "explore/**"
tags:
- "v*"
- "[0-9]*.[0-9]*.[0-9]*"
pull_request:
workflow_dispatch:
inputs:
publish_to_pypi:
description: "Publish to PyPI regardless of tag (true/false)"
required: false
default: "false"
permissions:
contents: write
id-token: write
env:
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
jobs:
linux-wheels:
name: Build Linux Wheels (${{ matrix.target }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist -i python3.10 python3.11 python3.12 python3.13 --manifest-path crates/openpiv_rust/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: dist
windows-wheels:
name: Build Windows Wheels (${{ matrix.target }})
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [x64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist -i python3.12 --manifest-path crates/openpiv_rust/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
path: dist
macos-wheels:
name: Build macOS Wheels (${{ matrix.target }})
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist -i python3.12 --manifest-path crates/openpiv_rust/Cargo.toml
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist
python-package:
name: Build OpenPIV Python Package (sdist & pure wheel)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: Build sdist and wheel
run: uv build --out-dir dist
- name: Upload Python distribution
uses: actions/upload-artifact@v4
with:
name: python-dist
path: dist
publish:
name: Publish to PyPI
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch' && github.event.inputs.publish_to_pypi == 'true') }}
needs: [linux-wheels, windows-wheels, macos-wheels, python-package]
steps:
- name: Download all wheels and packages
uses: actions/download-artifact@v8
with:
pattern: '*'
merge-multiple: true
path: dist
- name: Display files to publish
run: ls -la dist/
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Publish all distributions to PyPI
run: uv publish --token ${{ secrets.PYPI_API_TOKEN }} dist/*