Releases: cda-tum/mqt-workflows
MQT Reusable Workflows 1.4.1 Release
👀 What Changed
This small release adds a couple of opt-in features to facilitate continuous deployments to TestPyPI for pushes to main
.
If certain workflows should fail after this PR, it is probably due to the update of the astral-sh/setup-uv
action, which now expects a uv.lock
file to be present. If not already, that file can easily be generated via uv lock
.
🚀 Features and Enhancements
- 🔧 add a configuration option to turn off local versioning @burgholzer (#37)
- ❓ add change detection for running continuous deployment @burgholzer (#36)
- 🔧 allow to disable emulated wheel build @burgholzer (#35)
🤖 CI
- 🔧 add a configuration option to turn off local versioning @burgholzer (#37)
- ❓ add change detection for running continuous deployment @burgholzer (#36)
- 🔧 allow to disable emulated wheel build @burgholzer (#35)
📦 Packaging
- 🔧 add a configuration option to turn off local versioning @burgholzer (#37)
⬆️ Dependencies
- 🔧 add a configuration option to turn off local versioning @burgholzer (#37)
- ❓ add change detection for running continuous deployment @burgholzer (#36)
- 🔧 allow to disable emulated wheel build @burgholzer (#35)
- Bump astral-sh/setup-uv from 2 to 3 in the github-actions group @dependabot (#34)
Full Changelog: v1.4.0...v1.4.1
MQT Reusable Workflows 1.4.0 Release
👀 What Changed
This release refactors the way tests on Python are distributed and run. Instead of running separate sessions for each Python version, this PR changes the workflows to run all sessions in a single workflow run per operating system.
This should allow for maximum caching reuse across builds and reduce the number of CI runners that need to be waited for.
It also reduces the number of macOS runners requested per CI run, which is now fixed to 2 for the python tests regardless of the number of supported Python versions.
While, previously, only the ubuntu-latest
runner would run tests on all Python versions, this PR changes the workflows so that also macOS and Windows runners test all the versions.
This should not cause a noticable runtime increase given the excessive caching opportunities, both via ccache
and uv
.
Important
This change will require consuming workflows to adapt their configuration!
The skip-testing-latest-python
workflow input has been removed and the Python versions being tested are solely defined by the nox sessions configuration.
Consequently, if a package should not be tested under Python 3.13 yet for example, "3.13"
should be removed from the PYTHON_ALL_VERSIONS
array in the noxfile.py
.
In addition, this release switches to the official setup-uv
action and employs uv
in a couple more places (see #31 for further details).
🚀 Features and Enhancements
- ♻️ unify Python testing @burgholzer (#32)
- ⚡ use official
setup-uv
action and more ofuv
@burgholzer (#31) - 🚸 no longer need to explicitly provide
GITHUB_TOKEN
tosetup-z3
@burgholzer (#30)
🤖 CI
- ♻️ unify Python testing @burgholzer (#32)
- ⚡ use official
setup-uv
action and more ofuv
@burgholzer (#31)
⬆️ Dependencies
7 changes
- Bump pypa/cibuildwheel from 2.20 to 2.21 in the github-actions group @dependabot (#33)
- ♻️ unify Python testing @burgholzer (#32)
- ⚡ use official
setup-uv
action and more ofuv
@burgholzer (#31) - 🚸 no longer need to explicitly provide
GITHUB_TOKEN
tosetup-z3
@burgholzer (#30) - Bump peter-evans/create-pull-request from 6 to 7 in the github-actions group @dependabot (#29)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#28)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#27)
Full Changelog: v1.3.2...v1.4.0
MQT Reusable Workflows 1.3.2 Release
👀 What Changed
A small bugfix release for the MQT Core Update workflow.
The recommended workflow to incorporate the reusable workflow is
name: Update MQT Core
on:
schedule:
# run once a month on the first day of the month at 00:00 UTC
- cron: "0 0 1 * *"
workflow_dispatch:
inputs:
update-to-head:
description: "Update to the latest commit on the default branch"
type: boolean
required: false
default: false
pull_request:
paths:
- .github/workflows/update-mqt-core.yml
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
update-mqt-core:
name: ⬆️ Update MQT Core
uses: cda-tum/mqt-workflows/.github/workflows/[email protected]
with:
update-to-head: ${{ github.event.inputs.update-to-head == 'true' }}
🐛 Bug Fixes
🤖 CI
⬆️ Dependencies
Full Changelog: v1.3.1...v1.3.2
MQT Reusable Workflows 1.3.1 Release
👀 What Changed
A quick follow-up release to the 1.3.0 release that fixes an oversight in the packaging workflow definition.
🐛 Bug Fixes
- 🩹 fix emulation wheel build precondition @burgholzer (#25)
🤖 CI
- 🩹 fix emulation wheel build precondition @burgholzer (#25)
⬆️ Dependencies
- 🩹 fix emulation wheel build precondition @burgholzer (#25)
Full Changelog: v1.3.0...v1.3.1
MQT Reusable Workflows 1.3.0 Release
👀 What Changed
Combined Emulated Wheels
This release combines the builds for wheels that need emulation to save on CI resources and reduce overall build times (See #22) for details. Tools running this workflow using scikit-build-core as a build backend, should set
[tool.scikit-build]
# ...
build-dir = "build/{build_type}"
# ...
so that the build directory can be reused across builds. This only requires the actual binding target to be recompiled.
There is a very slim chance that this needs to be reverted or refactored if it turns out that the MQT QMAP builds exceed the six hour GitHub limit.
Tools should also set
[tool.cibuildwheel.windows]
# ...
environment = { SKBUILD_CMAKE_ARGS="--fresh" }
# ...
to avoid problems with old link settings remaining in the CMake cache on Windows.
Moving version tags
This marks the first release with moving minor version tags. Tools using the workflows from this repository can now pin them to minor versions vX.Y
. See below for an example.
MQT Core Update fixes
This release fixes the semver
check in the MQT Core auto-update workflow, which should now allow it to work properly.
In addition, tools using the workflow should adapt their update-mqt-core.yml
workflows from
jobs:
update-mqt-core:
name: ⬆️ Update MQT Core
uses: cda-tum/mqt-workflows/.github/workflows/[email protected]
with:
update-to-head: ${{ from JSON(github.event.inputs.update-to-head) || false }}
to
jobs:
update-mqt-core:
name: ⬆️ Update MQT Core
uses: cda-tum/mqt-workflows/.github/workflows/[email protected]
with:
update-to-head: ${{ github.event.inputs.update-to-head || false }}
In order to avoid an invalid script when this workflow is automatically triggered.
🚀 Features and Enhancements
- ✨ moving minor tags for workflows @burgholzer (#23)
- ♻️ combine builds for emulated wheels @burgholzer (#22)
🐛 Bug Fixes
- 🩹 fix semver check @burgholzer (#21)
- 🩹 fix path to
semver
in MQT Core update workflow @burgholzer (#20)
📄 Documentation
- 📝 add note in MQT Core Update PR description @burgholzer (#24)
🤖 CI
- 📝 add note in MQT Core Update PR description @burgholzer (#24)
- ✨ moving minor tags for workflows @burgholzer (#23)
- ♻️ combine builds for emulated wheels @burgholzer (#22)
- 🩹 fix semver check @burgholzer (#21)
- 🩹 fix path to
semver
in MQT Core update workflow @burgholzer (#20)
⬆️ Dependencies
- 📝 add note in MQT Core Update PR description @burgholzer (#24)
- ✨ moving minor tags for workflows @burgholzer (#23)
- ♻️ combine builds for emulated wheels @burgholzer (#22)
- 🩹 fix semver check @burgholzer (#21)
- 🩹 fix path to
semver
in MQT Core update workflow @burgholzer (#20)
Full Changelog: v1.2.1...v1.3.0
MQT Reusable Workflows 1.2.1 Release
👀 What Changed
This follow-up release allows skipping the testing pipeline on the latest supported Python version.
Under Linux, this will simply not test under that version, but all other supported versions.
Under macOS and Windows, it will test on the minimal supported version and the second latest version supported.
This is especially helpful when new Python versions are released and the ecosystem takes some time to settle and provide wheels for the new version.
The intention would be to enable the skip-testing-latest-python
flag once a new Python version is released to get our own wheel builds out as soon as possible.
Ideally immediately after that, a follow-up PR (along with a tracking issue) can be created that disables the flag again and that helps to keep track of the progress towards fully supporting new Python versions.
🚀 Features and Enhancements
- ✨ allow skipping testing on latest Python @burgholzer (#19)
🤖 CI
- ✨ allow skipping testing on latest Python @burgholzer (#19)
Full Changelog: v1.2.0...v1.2.1
MQT Reusable Workflows 1.2.0 Release
👀 What Changed
✨ Python 3.13
This release updates cibuildwheel
to its latest version, which brings support for building Python 3.13 wheels.
Packages that are upgrading to this workflow version should enable the Python 3.13 Trove classifier in their pyproject.toml
files, i.e.
classifiers = [
# ...
"Programming Language :: Python :: 3.13",
# ...
]
In addition to the regular wheels, Python 3.13 also includes a free-threaded variant that is built without the global interpreter lock (no-gil). As off now, this has to be explicitly enabled in the cibuildwheel configuration within the pyproject.toml
file, i.e.
[tool.cibuildwheel]
# Enable free-threaded support
free-threaded-support = true
Adoption of the free-threaded variant might vary in the beginning. Hence, adopting it in our packages might not be that easy as it will require all dependencies to also be available for the free-threaded variant or to be built from source. Nevertheless, we should try to support it as soon as possible.
⬆️ Dependencies
- Bump pypa/cibuildwheel from 2.19 to 2.20 in the github-actions group @dependabot (#18)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#17)
Full Changelog: v1.1.5...v1.2.0
MQT Reusable Workflows 1.1.5 Release
👀 What Changed
This patch release adds more flexibility to the cpp-linter workflow.
🚀 Features and Enhancements
- 🚸 allow configuration of the cpp-linter
extra-args
@burgholzer (#16)
🤖 CI
- 🚸 allow configuration of the cpp-linter
extra-args
@burgholzer (#16)
⬆️ Dependencies
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#15)
Full Changelog: v1.1.4...v1.1.5
MQT Reusable Workflows 1.1.4 Release
👀 What Changed
Fixes yet another small mistake in the autoupdate workflow, which should now finally be functional.
🐛 Bug Fixes
- ✏️ fix typo in workflow @burgholzer (#13)
🤖 CI
- ✏️ fix typo in workflow @burgholzer (#13)
⬆️ Dependencies
- ✏️ fix typo in workflow @burgholzer (#13)
- ⬆️🪝 update pre-commit hooks @pre-commit-ci (#12)
Full Changelog: v1.1.3...v1.1.4
MQT Reusable Workflows 1.1.3 Release
👀 What Changed
Faster pure Python packaging builds powered by uv
and fixes for the MQT Core autoupdate workflow.
🚀 Features and Enhancements
- ⚡📦 use
uv
for packaging builds in pure Python projects @burgholzer (#11)
🐛 Bug Fixes
- 🩹 fix auto update workflow @burgholzer (#10)
🤖 CI
- 🩹 fix auto update workflow @burgholzer (#10)
- ⚡📦 use
uv
for packaging builds in pure Python projects @burgholzer (#11)
📦 Packaging
- ⚡📦 use
uv
for packaging builds in pure Python projects @burgholzer (#11)
⬆️ Dependencies
- 🩹 fix auto update workflow @burgholzer (#10)
Full Changelog: v1.1.2...v1.1.3