From 9e555af70b789a92edd4da77fc381af96532f542 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Fri, 17 Oct 2025 15:21:40 -0400 Subject: [PATCH] chore: version bump 17.0.0 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ docs/reference/migrations.rst | 32 ++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- uv.lock | 4 ++-- 4 files changed, 62 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f477439f..fcef9cf56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Change Log +## [17.0.0] - 2025-10-17 + +### Changed + +- BREAKING CHANGE: Dropped support for Python 3.8 +- BREAKING CHANGE: `base_ref` parameter no longer gets reset to default branch by Decision task +- BREAKING CHANGE: `base_rev` parameter no longer gets reset to merge-base by Decision task +- BREAKING CHANGE: `run-task` script no longer fetches or checks out `base_ref` parameter +- BREAKING CHANGE: `run-task` script no longer fetches all heads if `head_ref` was not specified + +### Added + +- `run-task` now supports shallow Git clones +- Improved support for shallow clones in `repo.get_changed_files()` + +### Perf + +- Improvements to graph traversal logic and caching + +### Fixed + +- Bug in `retrigger-multiple` action's schema definition +- `run-task` no longer fetches head ref twice in some scenarios +- `run-task` avoids fetching tags in some scenarios when not necessary +- `run-task` properly normalizes `head_ref` before checking it out +- Appropriate exception now being caught in various `taskcluster` call sites + ## [16.2.1] - 2025-10-14 ### Fixed diff --git a/docs/reference/migrations.rst b/docs/reference/migrations.rst index ba31a38bf..18540d993 100644 --- a/docs/reference/migrations.rst +++ b/docs/reference/migrations.rst @@ -3,6 +3,38 @@ Migration Guide This page can help when migrating Taskgraph across major versions. +16.x -> 17.x +------------ + +* Upgrade to Python 3.9 or above. +* The ``base_ref`` parameter could now be ``None`` if it wasn't explicitly + passed into the Decision task. If this was relied upon, do the following + instead: + + .. code-block:: python + + from taskgraph.util.vcs import get_repository + + repo = get_repository() + base_ref = repo.default_branch + +* The ``base_rev`` parameter is no longer being reset to the merge-base. This + means in some cases, ``base_rev`` might not actually be an ancestor of + ``head_rev``. If you need the merge-base, you can use: + + .. code-block:: python + + from taskgraph.util.vcs import get_repository + + repo = get_repository() + base_rev = repo.find_latest_common_revision(parameters["base_rev"], parameters["head_rev"]) + +* The ``base_ref`` is no longer being fetched by ``run-task``. If you were + relying on it, you can run ``git fetch origin `` in a subprocess. +* The ``run-task`` scripts no longer fetches all heads when ``head_ref`` isn't + specified. If this behaviour was relied upon, you can run + ``git fetch +refs/heads/*:refs/remotes/work/*`` in a subprocess. + 15.x -> 16.x ------------ diff --git a/pyproject.toml b/pyproject.toml index 5bb167ac3..67bebcc01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ ### Project [project] name = "taskcluster-taskgraph" -version = "16.2.1" +version = "17.0.0" description = "Build taskcluster taskgraphs" readme = "README.rst" authors = [ diff --git a/uv.lock b/uv.lock index 7c9def4ac..b323eb158 100644 --- a/uv.lock +++ b/uv.lock @@ -595,7 +595,7 @@ name = "exceptiongroup" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ @@ -2020,7 +2020,7 @@ wheels = [ [[package]] name = "taskcluster-taskgraph" -version = "16.2.1" +version = "17.0.0" source = { editable = "." } dependencies = [ { name = "appdirs" },