Refactor GitHub Actions for wheel publishing

Updated GitHub Actions workflow to build and publish Python wheels. Removed unnecessary jobs and streamlined the process for better efficiency.
This commit is contained in:
BillTheMaker
2025-12-12 13:51:47 -07:00
committed by GitHub
parent 333f8f0f26
commit f085e977e6

View File

@@ -3,97 +3,78 @@ name: Publish to PyPI
on: on:
push: push:
tags: tags:
- 'v*' - 'v[0-9]+.[0-9]+.[0-9]+*'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
linux: build_and_publish:
name: Build and Publish All Wheels
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
target: [x86_64, aarch64] os: [ubuntu-latest, macos-latest, windows-latest]
steps: target: [x86_64]
- uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
command: build
args: --release --out dist --find-interpreter
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: dist
windows:
runs-on: windows-latest
strategy:
matrix:
target: [x64]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
command: build
args: --release --out dist --find-interpreter
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
path: dist
macos: - name: Set up Python
runs-on: macos-latest uses: actions/setup-python@v5
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
with: with:
target: ${{ matrix.target }} python-version: '3.12'
command: build
args: --release --out dist --find-interpreter
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist
sdist: - name: Install Rust
runs-on: ubuntu-latest uses: dtolnay/rust-toolchain@stable
steps: with:
- uses: actions/checkout@v4 toolchain: stable
- name: Build sdist
- name: Build wheel
uses: PyO3/maturin-action@v1 uses: PyO3/maturin-action@v1
with: with:
command: sdist target: ${{ matrix.target }}
args: --out dist command: build
- name: Upload sdist args: --release --out dist --find-interpreter
- name: Upload wheel artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: wheels-sdist name: wheel-${{ matrix.os }}-${{ matrix.target }}
path: dist path: dist/*.whl
release: publish:
name: Release name: Publish All Wheels
needs: [build_and_publish]
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist
merge-multiple: true
- name: Publish to PyPI steps:
uses: PyO3/maturin-action@v1 - name: Install maturin
run: pip install maturin
- name: Download ALL wheels
uses: actions/download-artifact@v4
with:
path: dist
- name: Flatten and upload
env: env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} # ← CORRECT TOKEN VAR
with: run: |
command: upload mkdir -p dist/flattened
args: --non-interactive --skip-existing dist/* rm -rf dist/flattened/*
# Copy EVERY wheel
find dist -name "*.whl" | while read wheel; do
cp "$wheel" dist/flattened/
done
echo "=== TOTAL WHEELS ==="
ls -la dist/flattened/*.whl | wc -l
cd dist/flattened
echo "=== UPLOADING $(ls *.whl | wc -l) WHEELS ==="
ls -la *.whl | head -5
# TWINE fallback (double protection)
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=${{ secrets.PYPI_API_TOKEN }}
maturin upload --skip-existing --non-interactive *.whl