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: steps:
- uses: actions/download-artifact@v4 - name: Install maturin
with: run: pip install maturin
pattern: wheels-*
path: dist
merge-multiple: true
- name: Publish to PyPI - name: Download ALL wheels
uses: PyO3/maturin-action@v1 uses: actions/download-artifact@v4
env: with:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} path: dist
with:
command: upload
args: --non-interactive --skip-existing dist/*
- name: Flatten and upload
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} # ← CORRECT TOKEN VAR
run: |
mkdir -p dist/flattened
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