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:
125
.github/workflows/publish2.yml
vendored
125
.github/workflows/publish2.yml
vendored
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user