Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the CD workflow to build, test, and package artifacts for Blender 5.1 by adding Python 3.13 alongside the existing Python 3.11 support.
Changes:
- Extend cibuildwheel builds to include CPython 3.13 wheels across Linux/macOS/Windows.
- Run Python unit tests on a matrix of Python 3.11 and 3.13.
- Package Blender extensions for both Blender 5.0 (cp311) and 5.1 (cp313), and adjust artifact naming/downloading accordingly.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| mkdir -p wheels | ||
| cp all-wheels/*${{ matrix.python-tag }}*.whl wheels/ || true | ||
| echo "Filtered wheels for ${{ matrix.python-tag }}:" |
There was a problem hiding this comment.
The wheel filtering step doesn’t verify that all expected wheels for the selected Python tag/platforms were copied before packaging. Since setup_addon.py only checks for a non-empty wheels/ directory, this job could still build and upload an extension that’s missing one or more platform wheels (e.g., if a macOS/Windows wheel build/upload failed). Consider failing the job here by explicitly checking for the expected wheel files (based on the CIBW_BUILD targets) and exiting non-zero if any are missing, rather than proceeding to package an incomplete addon.
| mkdir -p wheels | |
| cp all-wheels/*${{ matrix.python-tag }}*.whl wheels/ || true | |
| echo "Filtered wheels for ${{ matrix.python-tag }}:" | |
| set -euo pipefail | |
| mkdir -p wheels | |
| PY_TAG="${{ matrix.python-tag }}" | |
| echo "Filtering wheels for Python tag: ${PY_TAG}" | |
| # Count wheels matching the Python tag in the source directory | |
| SRC_COUNT=$(ls all-wheels/*"${PY_TAG}"*.whl 2>/dev/null | wc -l || true) | |
| if [ "${SRC_COUNT}" -eq 0 ]; then | |
| echo "Error: No wheels found in all-wheels/ for Python tag '${PY_TAG}'." | |
| exit 1 | |
| fi | |
| # Copy all matching wheels into the wheels directory | |
| cp all-wheels/*"${PY_TAG}"*.whl wheels/ | |
| # Verify that all expected wheels were copied | |
| DST_COUNT=$(ls wheels/*"${PY_TAG}"*.whl 2>/dev/null | wc -l || true) | |
| if [ "${DST_COUNT}" -ne "${SRC_COUNT}" ]; then | |
| echo "Error: Expected ${SRC_COUNT} wheels for Python tag '${PY_TAG}', but found ${DST_COUNT} in wheels/." | |
| exit 1 | |
| fi | |
| echo "Filtered wheels for ${PY_TAG}:" |
Description
Added additional builds for Blender 5.1, adding support for Python 3.13 (keeping support for Python 3.11).