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:
145
.github/workflows/publish2.yml
vendored
145
.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]
|
||||||
|
target: [x86_64]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- 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:
|
|
||||||
- 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
|
|
||||||
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
|
|
||||||
|
|
||||||
sdist:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Build sdist
|
|
||||||
uses: PyO3/maturin-action@v1
|
|
||||||
with:
|
|
||||||
command: sdist
|
|
||||||
args: --out dist
|
|
||||||
- name: Upload sdist
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: wheels-sdist
|
|
||||||
path: dist
|
|
||||||
|
|
||||||
release:
|
|
||||||
name: Release
|
|
||||||
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
|
- name: Set up Python
|
||||||
uses: PyO3/maturin-action@v1
|
uses: actions/setup-python@v5
|
||||||
env:
|
|
||||||
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
command: upload
|
python-version: '3.12'
|
||||||
args: --non-interactive --skip-existing dist/*
|
|
||||||
|
- 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
|
||||||
|
|||||||
Reference in New Issue
Block a user