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:
|
||||
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: Install maturin
|
||||
run: pip install maturin
|
||||
|
||||
- name: Publish to PyPI
|
||||
uses: PyO3/maturin-action@v1
|
||||
env:
|
||||
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
||||
with:
|
||||
command: upload
|
||||
args: --non-interactive --skip-existing dist/*
|
||||
- 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
|
||||
|
||||
Reference in New Issue
Block a user