Skip to content

Releases: cda-tum/mqt-workflows

MQT Reusable Workflows 1.4.0 Release

18 Sep 14:43
7bc94c4
Compare
Choose a tag to compare

👀 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

🤖 CI

⬆️ Dependencies

7 changes

Full Changelog: v1.3.2...v1.4.0

MQT Reusable Workflows 1.3.2 Release

19 Aug 13:15
821a111
Compare
Choose a tag to compare

👀 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/reusable-mqt-core-update.yml@v1.3
    with:
      update-to-head: ${{ github.event.inputs.update-to-head == 'true' }}

🐛 Bug Fixes

  • fix: 🐛 Fix incorrect usage of semver tool @DRovara (#26)

🤖 CI

  • fix: 🐛 Fix incorrect usage of semver tool @DRovara (#26)

⬆️ Dependencies

  • fix: 🐛 Fix incorrect usage of semver tool @DRovara (#26)

Full Changelog: v1.3.1...v1.3.2

MQT Reusable Workflows 1.3.1 Release

09 Aug 14:58
a9a4715
Compare
Choose a tag to compare

👀 What Changed

A quick follow-up release to the 1.3.0 release that fixes an oversight in the packaging workflow definition.

🐛 Bug Fixes

🤖 CI

⬆️ Dependencies

Full Changelog: v1.3.0...v1.3.1

MQT Reusable Workflows 1.3.0 Release

09 Aug 13:16
5317058
Compare
Choose a tag to compare

👀 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/reusable-mqt-core-update.yml@v1.3.0
    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/reusable-mqt-core-update.yml@v1.3
    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

🐛 Bug Fixes

📄 Documentation

🤖 CI

⬆️ Dependencies

Full Changelog: v1.2.1...v1.3.0

MQT Reusable Workflows 1.2.1 Release

05 Aug 12:56
fe9af85
Compare
Choose a tag to compare

👀 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

🤖 CI

Full Changelog: v1.2.0...v1.2.1

MQT Reusable Workflows 1.2.0 Release

05 Aug 07:59
a7a76e6
Compare
Choose a tag to compare

👀 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

Full Changelog: v1.1.5...v1.2.0

MQT Reusable Workflows 1.1.5 Release

25 Jul 15:30
3edc672
Compare
Choose a tag to compare

👀 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

Full Changelog: v1.1.4...v1.1.5

MQT Reusable Workflows 1.1.4 Release

01 Jul 13:22
b26b05d
Compare
Choose a tag to compare

👀 What Changed

Fixes yet another small mistake in the autoupdate workflow, which should now finally be functional.

🐛 Bug Fixes

🤖 CI

⬆️ Dependencies

Full Changelog: v1.1.3...v1.1.4

MQT Reusable Workflows 1.1.3 Release

21 Jun 11:39
293eb61
Compare
Choose a tag to compare

👀 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

🤖 CI

📦 Packaging

  • ⚡📦 use uv for packaging builds in pure Python projects @burgholzer (#11)

⬆️ Dependencies

Full Changelog: v1.1.2...v1.1.3

MQT Reusable Workflows 1.1.2 Release

20 Jun 17:11
84231f1
Compare
Choose a tag to compare

👀 What Changed

This quick release reverts the change from v1.1.1 that required a token for the auto-update workflow.
Furthermore, it adds an option for updating the mqt-core version to the latest commit on main.

🚀 Features and Enhancements

🤖 CI

⬆️ Dependencies

Full Changelog: v1.1.1...v1.1.2