diff --git a/.github/workflows/publish2.yml b/.github/workflows/publish2.yml index b11e2a1..62a187b 100644 --- a/.github/workflows/publish2.yml +++ b/.github/workflows/publish2.yml @@ -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] + os: [ubuntu-latest, macos-latest, windows-latest] + target: [x86_64] + 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 - - 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 - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} + - name: Set up Python + uses: actions/setup-python@v5 with: - command: upload - args: --non-interactive --skip-existing dist/* + 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