name: Build wheels and publish to PyPI on: release: types: [published] pull_request: permissions: contents: read jobs: main: name: sdist + pure wheel runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up latest Python uses: actions/setup-python@v4 with: python-version: "*" - name: Install latest pip, build, twine run: | python -m pip install --upgrade --disable-pip-version-check pip python -m pip install --upgrade build twine - name: Build wheel and source distributions run: python -m build - if: github.event_name == 'release' name: Upload to PyPI via Twine env: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: twine upload --verbose -u '__token__' dist/* mypyc: name: mypyc wheels (${{ matrix.name }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest name: linux-x86_64 - os: windows-2019 name: windows-amd64 - os: macos-11 name: macos-x86_64 macos_arch: "x86_64" - os: macos-11 name: macos-arm64 macos_arch: "arm64" - os: macos-11 name: macos-universal2 macos_arch: "universal2" steps: - uses: actions/checkout@v4 - name: Build wheels via cibuildwheel uses: pypa/cibuildwheel@v2.15.0 env: CIBW_ARCHS_MACOS: "${{ matrix.macos_arch }}" - name: Upload wheels as workflow artifacts uses: actions/upload-artifact@v3 with: name: ${{ matrix.name }}-mypyc-wheels path: ./wheelhouse/*.whl - if: github.event_name == 'release' name: Upload wheels to PyPI via Twine env: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: pipx run twine upload --verbose -u '__token__' wheelhouse/*.whl update-stable-branch: name: Update stable branch needs: [main, mypyc] runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout stable branch uses: actions/checkout@v4 with: ref: stable fetch-depth: 0 - if: github.event_name == 'release' name: Update stable branch to release tag & push run: | git reset --hard ${{ github.event.release.tag_name }} git push