Skip to content

[CI] enable Python 3.13 #311

[CI] enable Python 3.13

[CI] enable Python 3.13 #311

Workflow file for this run

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