Bump actions/checkout from 4 to 7 #22
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 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@v7 | |
| - 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@v7 | |
| - 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@v7 | |
| - 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@v7 | |
| - 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@v4 | |
| 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/* |