[CI] enable Python 3.13 #311
This file contains 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: Python Wheel | |
on: | |
push: | |
tags-ignore: | |
- '**' | |
branches: | |
- '**' | |
release: | |
types: ['released', 'prereleased'] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: python:${{ matrix.python-version }}${{ matrix.image-suffix }}-bullseye | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
include: | |
- python-version: '3.13' | |
image-suffix: '-rc' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build | |
shell: bash | |
run: | | |
python3 -m venv /tmp/py-venv | |
. /tmp/py-venv/bin/activate | |
python -m pip install -U pip build | |
python -m build . | |
- name: Upload Wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: py_build_cmake-whl-${{ matrix.python-version }} | |
path: dist/py_build_cmake-*.whl | |
- name: Upload source | |
uses: actions/upload-artifact@v4 | |
with: | |
name: py_build_cmake-src-${{ matrix.python-version }} | |
path: dist/py_build_cmake-*.tar.gz | |
test: | |
needs: build | |
runs-on: ubuntu-latest | |
container: python:${{ matrix.python-version }}${{ matrix.image-suffix }}-bullseye | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
include: | |
- python-version: '3.13' | |
image-suffix: '-rc' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-${{ matrix.python-version }} | |
path: dist | |
- name: Run Nox | |
run: | | |
python -m pip install -U pip nox distlib jinja2 | |
python -m nox --force-color | |
env: | |
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist | |
build-windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Build | |
shell: powershell | |
run: | | |
python -m venv py-venv | |
./py-venv/Scripts/Activate.ps1 | |
python -m pip install -U pip build | |
python -m build . | |
env: | |
PYTHONUTF8: 1 | |
- name: Upload Wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: py_build_cmake-whl-win-${{ matrix.python-version }} | |
path: dist/py_build_cmake-*.whl | |
test-windows: | |
needs: build-windows | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-win-${{ matrix.python-version }} | |
path: dist | |
- name: Run Nox | |
run: | | |
python -m pip install -U pip nox distlib jinja2 | |
python -m nox --force-color | |
env: | |
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist | |
build-macos: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
os: ['macos-13', 'macos-latest'] | |
exclude: | |
- python-version: '3.7' | |
os: 'macos-latest' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Build | |
run: | | |
python -m venv py-venv | |
. ./py-venv/bin/activate | |
python -m pip install -U pip build | |
python -m build . | |
- name: Upload Wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: py_build_cmake-whl-${{ matrix.os }}-${{ matrix.python-version }} | |
path: dist/py_build_cmake-*.whl | |
test-macos: | |
needs: build-macos | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] | |
os: ['macos-13', 'macos-latest'] | |
exclude: | |
- python-version: '3.7' | |
os: 'macos-latest' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
name: Install Python | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-${{ matrix.os }}-${{ matrix.python-version }} | |
path: dist | |
- name: Run Nox | |
run: | | |
python -m pip install -U pip nox distlib jinja2 | |
python -m nox --force-color | |
env: | |
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist | |
cibw: | |
needs: [build] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, windows-2019, macos-13, macos-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-3.11 | |
path: dist | |
- name: Build Wheels | |
uses: pypa/cibuildwheel@711a3d017d0729f3edde18545fee967f03d65f65 | |
with: | |
package-dir: examples/pybind11-project | |
output-dir: dist | |
env: | |
CIBW_ARCHS_LINUX: 'x86_64 i686' | |
CIBW_ARCHS_WINDOWS: 'AMD64 x86 ARM64' | |
CIBW_ARCHS_MACOS: 'x86_64 universal2 arm64' | |
CIBW_BUILD: 'cp311-* pp39-*' | |
CIBW_ENVIRONMENT: 'PIP_FIND_LINKS=${{ github.workspace }}/dist PY_BUILD_CMAKE_VERBOSE=1' | |
CIBW_ENVIRONMENT_LINUX: 'PIP_FIND_LINKS=/project/dist PY_BUILD_CMAKE_VERBOSE=1' | |
CIBW_ENVIRONMENT_WINDOWS: 'PIP_FIND_LINKS=D:/a/py-build-cmake/py-build-cmake/dist PY_BUILD_CMAKE_VERBOSE=1' | |
- name: Upload Wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pybind11_project-${{ matrix.os }}-whl | |
path: dist/*.whl | |
check-release: | |
if: ${{ github.event.action == 'released' || github.event.action == 'prereleased' }} | |
needs: [test, test-windows, test-macos, cibw] | |
runs-on: ubuntu-latest | |
container: python:${{ matrix.python-version }}-bullseye | |
strategy: | |
matrix: | |
python-version: ['3.11'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-${{ matrix.python-version }} | |
path: dist | |
- name: Install py_build_cmake | |
run: pip install --find-links=dist py_build_cmake==${{ github.event.release.tag_name }} | |
- name: 'Check py_build_cmake version' | |
run: | | |
[ "${{ github.event.release.tag_name }}" == "$(python -c 'from importlib.metadata import version as v; print(v("py_build_cmake"))')" ] | |
shell: bash | |
release: | |
needs: [check-release] | |
if: ${{ github.event.action == 'released' || github.event.action == 'prereleased' }} | |
runs-on: ubuntu-latest | |
environment: | |
name: release | |
url: https://pypi.org/p/py-build-cmake | |
permissions: | |
id-token: write # mandatory for trusted publishing | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-whl-3.11 | |
path: dist | |
- uses: actions/download-artifact@v4 | |
with: | |
name: py_build_cmake-src-3.11 | |
path: dist | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@81e9d935c883d0b210363ab89cf05f3894778450 |