Updated GitHub Actions workflow to build and publish Python wheels. Removed unnecessary jobs and streamlined the process for better efficiency.
81 lines
2.0 KiB
YAML
81 lines
2.0 KiB
YAML
name: Publish to PyPI
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v[0-9]+.[0-9]+.[0-9]+*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build_and_publish:
|
|
name: Build and Publish All Wheels
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
target: [x86_64]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
toolchain: stable
|
|
|
|
- name: Build wheel
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.target }}
|
|
command: build
|
|
args: --release --out dist --find-interpreter
|
|
|
|
- name: Upload wheel artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wheel-${{ matrix.os }}-${{ matrix.target }}
|
|
path: dist/*.whl
|
|
|
|
publish:
|
|
name: Publish All Wheels
|
|
needs: [build_and_publish]
|
|
runs-on: ubuntu-latest
|
|
|
|
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 }} # ← 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
|