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:
push:
tags:
- 'v*'
- 'v[0-9]+.[0-9]+.[0-9]+*'
workflow_dispatch:
jobs:
linux:
build_and_publish:
name: Build and Publish All Wheels
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- 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
os: [ubuntu-latest, macos-latest, windows-latest]
target: [x86_64]
windows:
runs-on: windows-latest
strategy:
matrix:
target: [x64]
steps:
- 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:
runs-on: macos-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: PyO3/maturin-action@v1
- name: Set up Python
uses: actions/setup-python@v5
with:
target: ${{ matrix.target }}
command: build
args: --release --out dist --find-interpreter
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist
python-version: '3.12'
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
target: ${{ matrix.target }}
command: build
args: --release --out dist --find-interpreter
- name: Upload wheel artifact
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist
name: wheel-${{ matrix.os }}-${{ matrix.target }}
path: dist/*.whl
release:
name: Release
publish:
name: Publish All Wheels
needs: [build_and_publish]
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
uses: PyO3/maturin-action@v1
steps:
- name: Install maturin
run: pip install maturin
- name: Download ALL wheels
uses: actions/download-artifact@v4
with:
path: dist
- name: Flatten and upload
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing dist/*
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