ci: never publish pre-releases to PyPI #52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Upload Python wheel to PyPI | ||
|
Check failure on line 1 in .github/workflows/upload_pypi.yml
|
||
| on: | ||
| release: | ||
| if: ${{ !github.event.release.prerelease }} | ||
| types: [created] | ||
| # Pre-releases exist to host pinned artifacts (see pure-wheel.yml) — they must | ||
| # NEVER publish to PyPI. Guarded per-job because uploads happen per-job: on | ||
| # 2026-08-15 a pre-release tag partially published 7.6.6.dev0 (sdist + mac/win | ||
| # wheels) before the linux legs failed. | ||
| jobs: | ||
| wheels: | ||
| if: ${{ !github.event.release.prerelease }} | ||
| strategy: | ||
| max-parallel: 4 | ||
| fail-fast: false | ||
| matrix: | ||
| python-version: [3.8, 3.9, '3.10', 3.11, 3.12] | ||
| platform: [macos-latest, windows-latest] # Wheels on linux below | ||
| runs-on: ${{ matrix.platform }} | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Set up Python ${{ matrix.python-version }} | ||
| uses: actions/setup-python@v7 | ||
| with: | ||
| python-version: ${{ matrix.python-version }} | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install setuptools wheel twine Cython build | ||
| - name: Build and publish wheel | ||
| env: | ||
| TWINE_USERNAME: __token__ | ||
| TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }} | ||
| run: | | ||
| python -m build | ||
| twine upload dist/*.whl | ||
| linux_wheels: | ||
| if: ${{ !github.event.release.prerelease }} | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v7 | ||
| with: | ||
| python-version: 3.11 | ||
| - name: Stable with rustfmt and clippy | ||
| uses: actions-rs/toolchain@v1 | ||
| with: | ||
| profile: default | ||
| toolchain: stable | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install twine | ||
| - name: Python wheels manylinux build | ||
| uses: RalfG/python-wheels-manylinux-build@v0.7.1 | ||
| with: | ||
| python-versions: 'cp38-cp38 cp39-cp39 cp310-cp310 cp311-cp311 cp312-cp312' | ||
| build-requirements: 'setuptools cython setuptools_scm' | ||
| - name: Build and publish wheel | ||
| env: | ||
| TWINE_USERNAME: __token__ | ||
| TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }} | ||
| run: | | ||
| twine upload dist/vpython-*-manylinux*.whl | ||
| linux_aarch64_wheels: | ||
| if: ${{ !github.event.release.prerelease }} | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v7 | ||
| with: | ||
| python-version: 3.11 | ||
| - name: Set up QEMU | ||
| id: qemu | ||
| uses: docker/setup-qemu-action@v3 | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install twine | ||
| - name: Python wheels manylinux build | ||
| uses: RalfG/python-wheels-manylinux-build@v0.4.2-manylinux2014_aarch64 | ||
| with: | ||
| python-versions: 'cp38-cp38 cp39-cp39 cp310-cp310 cp311-cp311 cp312-cp312' | ||
| build-requirements: 'setuptools cython setuptools_scm' | ||
| - name: Build and publish wheel | ||
| env: | ||
| TWINE_USERNAME: __token__ | ||
| TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }} | ||
| run: | | ||
| twine upload dist/vpython-*-manylinux*.whl | ||
| sdist: | ||
| if: ${{ !github.event.release.prerelease }} | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v7 | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v7 | ||
| with: | ||
| python-version: '3.11' | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install setuptools wheel twine Cython build | ||
| - name: Build and publish | ||
| env: | ||
| TWINE_USERNAME: __token__ | ||
| TWINE_PASSWORD: ${{ secrets.PYPI_UPLOAD_TOKEN }} | ||
| run: | | ||
| python -m build | ||
| twine upload dist/*.tar.gz | ||