- fetch-content: support for downloading a single file and putting it in an archive
- use base repo for project name in github .taskcluster.yml template (#610)
- added False as option in from-deps set-name config (#621)
- fetch-content: use urlopen's context parameter instead of cafile (#618)
- run-task: update our copy of robustcheckout hg extension (#617)
- avoid computing expensive default values when the value is overridden anyways
- hash the uncompressed contents of docker context tar (#626)
- fetch-content: log x-cache-status when content size doesn't match expected (#606)
- Don't assume the taskcluster proxy is running on http://taskcluster (#603)
- Do not apply skip-unless-changed for cron triggers (#604)
- New
matrix
transforms added to allow easily splitting tasks - The
-p/--parameters
flag now supportsindex=<index>
as a means of discovering parameters
- BREAKING CHANGE:
target_tasks_method
filter no longer implicitly added if other filters are used - An OSError when generating docker contexts when many files were involved
- A bug when attempting to find prior actions in Github action tasks
- The
when.files-changed
optimization no longer implicitly adds unrelatedtasks-from
files
- BREAKING CHANGE: docker image task labels changed from
build-docker-image
todocker-image
- Regression to
static-url
fetches when using thestrip_components
oradd_prefix
features
- A couple more regressions with the Decision image
- Cleaned up temporary
uv
lockfile owned by root - Added another
--no-cache
flag to auv
command
- Cleaned up temporary
run-task
now installs packages to user site dir when installing requirements withuv
- Fetch tasks using
static-url
will now properly rename non-archive files
- Regression in Decision image where
taskgraph
was no longer on the $PATH - Decision image no longer contains root owned
uv
cache uv
now included in therun-task
image
taskgraph.optimize.register_strategy
can now pass kwargs on to the optimization class
taskgraph.config.GraphConfig
now implements aget(<key>)
method (#577)- Global tags for
project
andtrust-domain
are now applied to all tasks (#579)
run-task
script no longer attempts to chmod/dev/kvm
if it already has the right permissions (#578)- This fixes an issue when using a container with podman
- Use
uv
to install requirements if available (#572) - Allow 9,999 upstream dependencies on a Task (#575)
- Taskcluster platform work that enabled this: taskcluster/taskcluster#7151
- Ensure builds don't fail if
/builds
already exists in Dockerfile (#573) - Add
coreutils
to thelinux
Dockerfile (#573)
- BREAKING CHANGE: removed hardcode python3 path on macOS (#566)
- BREAKING CHANGE: register_action_callback interface has changed (#553)
- Task name is now available in
task_context
(#562)
- get_ancestors ignores 404s to avoid failing when some tasks have already expired (#569)
- Error in optimization log message (#554)
- Git file renames now count as changed files for optimization purposes (#555)
- Make toolchain and fetch tasks work when there is more than one present, and at least one is defined as a dict (#551)
- BREAKING CHANGE: Bug 1796139 - Pull in fetch-content changes from mozilla-central by @jcristau (#541)
- BREAKING CHANGE: Update image_builder Docker image to version 5.1.0 (#520)
- support fully configured fetches for toolchain and fetch upstreams (#545)
- Reverted "fetch-content detects archive type instead of using the file extension" change from 9.2.0, for breaking backwards compatibility (#543)
- fetch-content detects archive type instead of using the file extension
- fetch-content validates downloads against server-provided content-length when possible, and retries downloads on size or checksum mismatch
- github projects set up by
taskgraph init
now use level 1 for pull request graphs
- Separate log for optimizations that always logs verbosely (#525)
- Retry batched taskcluster requests (#529)
- Allow setting per-task priority (#534)
- Updated ReadOnlyDict vendor (#537)
- Invalid escape in string literal in robustcheckout (#475)
- IndexSearch optimization now logs when it refuses to replace a task (#524)
- Use versioned decision image in cookiecutter .taskcluster.yml files (#528)
- New
taskgraph.util.copy.deepcopy
function to assist deepcopying Task objects efficiently - Toolchain tasks now support relative script paths
taskgraph.util.templates.merge
no longer attempts to mergeby-<attribute>
configs- Cached task digest now factors in Chain of Trust config
- Updated
verify_routes_notification_filters
to support all valid Taskcluster values
- Removed the
taskgraph.util.memoize
utility function
- Invalid parameters passed to
IndexSearch
optimization fromdocker
utility
IndexSearch
optimization supports both old and new (from 8.1.0) signatures
- New Taskcluster utility functions to use the new Taskcluster
batch
APIs
- Optimization logic uses new
batch
APIs to vastly reduce number of queries made to Taskcluster
- Regression to
files-changed
calculation for pull requests (#494) - Support
**kwargs
in functions wrapped bytaskgraph.util.memoize
(#490) - Support
--exclude-key
argument when the excluded key may or may not exist (#489) - Stop requiring REGISTRY and VERSION files for
taskgraph build-image
(#488)
- Ability to use custom name functions in
from_deps
transforms (#484) - New
from_deps
name function that doesn't strip the dep's kind (#484) - New cli flag to force using locally generated
files_changed
(#481)
- Support for
artifact-reference
with private artifacts (#485)
- Replaced
head_ref
in pull-request cached task routes (#486) - Created a new
files_changed
parameter (#481)
- Removed the
taskgraph.files_changed
module (#481)
- Don't set 'base_ref' on github-release events (#470)
- Faster yaml loading using the native loader if available (#474)
- Memoize
get_task_definition
and_get_deps
(#477)
- Create a base docker image containing only run-task
- Support for actions in pull-requests
- Various fixes targeting tarfile reproducibility
- Make run-task shebang use /usr/bin/env python3 (#453)
- Improved logging to optimization phase
- Utility function to walk through a task's dependency ancestors
taskgraph init
support for github-release events in .taskcluster.ymltaskgraph init
.taskcluster.yml passes short refs to run-task- Check to ensure reserved dependency edge
docker-image
isn't used - Improved tracebacks when querying json-automationrelevance from hg.mozilla.org fails
- Add a
get_ancestors
helper to find ancestor tasks through the Taskcluster API
- Add a
cache-pull-requests
parameter totaskcluster/config.yml
to disable caching of tasks on pull requests.
- Add a
task-expires-after
parameter totaskcluster/config.yml
to set the default value forexpires-after
on level 1 tasks.
- Wrong module name being generated in
taskgraph init
- Exception in
taskgraph test-action-callback
due to wrong default root - Reverted change causing log spam during optimization phase
- Reference to wrong root directory in
taskgraph action-callback
- Ensure pull requests properly use cached tasks
- Print help if no arguments are provided to
taskgraph
- run-task: pass '--break-system-packages' when installing pip requirements
- Bootstrap Taskgraph 7 with latest decision image
- Update template Dockerfile to work with current alpine:latest base image
- Ability to use dictionary keys with
<task-reference>
- Body of responses logged on failure in
taskgraph.util.taskcluster
- BREAKING CHANGE: Root directory now considered to be
taskcluster
instead oftaskcluster/ci
- BREAKING CHANGE:
config.yml
moved fromtaskcluster/ci
totaskcluster
- BREAKING CHANGE:
taskcluster/ci
renamed totaskcluster/kinds
- BREAKING CHANGE:
taskgraph.transforms.job
renamed totaskgraph.transforms.run
- BREAKING CHANGE: Renamed
taskgraph.target_tasks._target_task
toregister_target_task
- BREAKING CHANGE: Switched Decision docker image from Ubuntu 22.04 to Debian 12
index-task
docker image upgrade to node v18
- BREAKING CHANGE: Dropped support for Python 3.7
- BREAKING CHANGE: Removed
taskgraph.util.decision.make_decision_task
- BREAKING CHANGE: Removed the
decision-mobile
docker image - BREAKING CHANGE: Removed
taskgraph.transforms.release_notifications
shim
- BREAKING CHANGE: Stopped hardcoding path to
hg
on MacOS inrun-task
- Worker caches setup by the
run
transforms now contain the docker image hash if applicable --diff
flag will not fail if only one of the two graph generations failed- Paths in
taskgraph.util.hash
are normalized for Windows support taskgraph init
template now separates Decision task caches by project
taskgraph init
no longer derives the project name from local checkout dirrun-task
bypasses Git's safe directory feature which breaks caches on multi-user workers- Fix for
taskgraph load-image
when specifying a name deadline-after
field added tojob_description_schema
--target-kind
flag can be passed to Taskgraph multiple times- Ability to specify max worker processes when generating graphs in parallel
taskgraph.parameters._get_defaults
no longer raises outside of a repository
- Exception when running
taskgraph load-image
andtaskgraph build-image
- Missing Github ssh fingerprints for
ed25519
andecdsa-sha2-nistp256
keys inrun-task
- Improved error message for unsupported repos when running
taskgraph init
- Stopped assuming
origin
remote intaskgraph init
- Suppressed expected stderr logging when running
taskgraph init
- Don't override all existing dependencies in
from-deps
(allow upstream or downstream transforms to also add them)
- Don't add a
fetches
entry for kinds without artifacts defined infrom-deps
- Sort fetches by key and artifact to ensure a consistent ordering
- A new
chunking
transform that helps parallelize tasks - Support for adding
fetches
withfrom-deps
- An option for not overriding task
name
withfrom-deps
autoCancelPreviousChecks
is set totrue
when initializing a new GitHub repository withtaskgraph init
- Support for substituting arbitrary parts of a task definition with
task-context
command-context
support injob
transforms (this can now be implemented withtask-context
)
- Complain when
group_by
functions are attempted to registered twice - Use
validate_schema
infrom_deps
to avoid breaking--fast
- Ability to specify a list of kinds in the
enable_always_target
parameter
- Assertion that payload and index builder names are unique
- Error handling when duplicate
run_using
functions are defined
- Relaxed PyYaml dependency constraint to work around a PyYaml issue
- Reverted memoize on
load_yaml
utility which causes issues with parallel generations - Added line to log command used to invoke
run-task
- Support for overriding the default task deadline in
ci/config.yml
- Support for Mercurial 6.0+ in
robustcheckout
script - Added an
all
group for thefrom_deps
transforms - Added support for the
purgeCaches
feature ofgeneric-worker
- Added missing line feed to Python version log in
run-task
script - Return null revision when no common ancestor found in
repo.find_latest_common_revision
- Added
--force
flag when updating Git submodules inrun-task
script - Fix ImportError with old versions of Python (fail on version check instead)
- Regression in add-new-jobs and retrigger actions, introduced in 5.1.0.
- Replaced 'attrs' with 'dataclasses'
- Disallow extraneous keys in the
from-deps
config run-task
now fetches tags when necessary after cloning repo
- New
from-deps.unique-kinds
key to allow depending on multiple tasks of a kind - New
get_dependencies
andget_primary_dependency
functions intaskgraph.util.dependencies
run-task
now logs the Python version it was invoked with
- Bug preventing use of custom
group_by
functions withfrom_deps
transforms
- New
from_deps
transforms for creating follow-up tasks
- Parallel generation (via multiple params) returns non-zero if one fails
- Regression around make index transform running out of order
- Counted
if-dependencies
andsoft-dependencies
towards dependency limit check - Error messaging when Docker is stopped
- Error messaging when invalid non-existent dependencies are added
- Command line exception when branch name contains a
/
- Abort long running Git clone / fetch when transfer is too slow
- New
default
loader which implicitly uses thejob
andtask
transforms - Support for a custom command to invoke
run-task
in thejob.run_task
transforms - Can omit object (default:
transforms
) when listing transforms in a kind config - Ability to specify
treeherder: true
which will auto-populate Treeherder metadata - Added
index-path-regexes
key toconfig.yml
which can be used withmake_index_task
morph
- Stop injecting
docker-image
tasks when DONTBUILD is used in commit message
fetch-content
androbustcheckout
time out on idle http connections
- Support for python 3.6
- Updated github ssh host key (per https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/)
- A
taskgraph init
command to bootstrap projects on Firefox-CI
- DONTBUILD in a commit message now works for Github pushes
fetch-content
script now usesunzip -q
to avoid polluting logs
- Python 3.11 is now tested in CI
- Support for
.tgz
file extension infetch-content
script - Extra arguments now forwarded from
job.toolchain
transforms tojob.run_task
- All calls to
util.yaml.load_yaml
are now memoized - Support for
command-context.from-file
inrun_task
transforms - Worker provisioner / type can be formatted with alias and trust-domain in
config.yml
util.vcs.get_commit_message
actually uses itsrevision
parameter
run-task
is able to git-checkout non-default branchutil.hash.hash_paths()
takes much less time to run when provided with 10+ patterns.
shipping-phase
attribute intask
andjob
transforms.
- Support for
disableSeccomp
capability. This was removed in Taskcluster 45.0.0 as it was determined to be unnecessary.
- New
rebuild_cached_tasks
action to facilitate regenerating long-lived tasks
- Updated
image_builder
Docker image to version 5.0.0
- Support for Matrix, Slack and pulse in notify transforms
- Renamed
taskgraph.transforms.release_notifications
totaskgraph.transforms.notify
(including backwards compatible shim)
taskgraph.parameters._get_defaults
catchesmozilla_repo_urls.errors.UnsupportedPlatformError
in order not to bustmach
commands
- Only depend on zstandard in the 'load-image' extra to avoid large (likely unused) binaries
- Ability to enable/disable the
always_target
attribute via a newenable_always_target
parameter
fetch-content
has improved support for git submodulesfetch-content
can fetch private git repositories over sshfetch-content
can optionally use chain-of-trust artifacts to validate downloadsfetch-content
supports repacking tar archives containing symbolic linksfetch-content
repacks now use the same format as the original archivefetch-content
can be told to keep the.git
directoryfetch-content
takes care to log git commit ids even when pointed at a branch namefetch-content
uses github's archive generator to speed up cloning- Support for the disableSeccomp capability in docker-worker v44.22.0
taskgraph load-image
CLI command can now run without raising aModuleNotFoundError
.
- Ability to override optimization strategies via parameter
- Support for pinning hg.mozilla.org fingerprint in
run-task
as it is no longer necessary
- Use proper Treeherder route for
github-pull-request-untrusted
- Use
parameters_loader
ingenerator.load_tasks_for_kind
- Run initial verifications after calling
register
parameters._get_defaults
doesn't fail ifmozilla-repo-urls
didn't manage to parse the URL. Instead, it just provides emptybase_repository
,head_repository
, andproject
.- Similarly,
parameters._get_defaults
doesn't try to determine an accuratebase_rev
andbase_ref
anymore. This caused too many issues on developers' laptops. It provides now empty strings too.
vcs.remote_name
returns the first available remote and warns about itvcs.default_branch
returns the remote branch because the local one may not existtaskgraph.parameters._get_defaults
trims.git
from project when repository URL ends with.git
vcs.default_branch
now takes git-cinnabar into account when guessing default branch.
- SSH repositories are now supported in action tasks
run-task
doesn't pull tags from githead_repository
util.time.json_time_from_now()
andutil.time.current_json_time()
now always returns milliseconds instead of sometimes rounding it up- Trimmed
.git
from tc-treeherder route's project
- BREAKING CHANGE:
TransformConfig.kind_dependencies_tasks
is now a dictionary keyed by task label. - BREAKING CHANGE:
vcs.head_ref
was renamed intovcs.head_rev
to clarify that the function returns a revision. This also matches--head-rev
. - BREAKING CHANGE: Similarly,
vcs.base_ref
was renamed intovcs.base_rev
. run-task
now clones all git-submodules at the same time as cloning the base/head repository.run-task
now checks out a revision as a named branch that matches${PROJECT}_HEAD_REF
head_ref
parameter now points to a named branch and if needed, falls back to the revision hash
vcs.get_changed_files()
which returns a list of files that are changed in this repository's working copy.vcs.get_outgoing_files()
which returns a list of changed files compared to upstream.vcs.remote_name
that tracks the name of the remote repository (e.g.:default
onhg
ororigin
ongit
)base_ref
parameter that points to the reference (e.g.: a branch) on the base repositoryvcs.find_latest_common_revision()
which finds the common ancestor between a providedbase_ref
and the currenthead_rev
vcs.does_revision_exist_locally()
to find out if a changeset/commit exists in the locally cloned repositorybase_rev
parameter that points to the most common ancestor between the ancestors ofhead_rev
andbase_ref
@register_morph
decorator which does what the name implies.
- BREAKING CHANGE:
taskgraph.util.taskcluster.status_task
now returns the status object rather than the string state. - BREAKING CHANGE: Replacement optimization strategies now take a
deadline
argument. - BREAKING CHANGE: Replaces
Either
base optimization strategy with anAny
composite strategy. - BREAKING CHANGE:
taskgraph.util.WHITELISTED_SCHEMA_IDENTIFIERS
is nowtaskgraph.util.EXCEPTED_SCHEMA_IDENTIFIERS
. - BREAKING CHANGE: The
default
target tasks method now filters out tasks that define ashipping_phase
.
- A new
taskgraph.util.taskcluster.state_task
returns the string state (like status_task used to). - The ability to register custom optimization strategies.
- Added
release_notifications
transforms, enabling tasks to send e-mail notifications. It is usually used in the context of releases when you want to inform a group of people about the completion of a phase of a release. Notifications can contain data about what project/version reached a given phase. - New parameters:
version
,next_version
,build_number
. As of now, they are be used byrelease_notification
to send e-mails that can contain such data.
- Allow JSON-e in schema identifiers
run-task
script sets aTASK_WORKDIR
env pointing to the task specific working directory- Add
defer
andenforce_single_match
arguments inutil.schema.resolve_keyed_by
- Misspelling in job transforms causing utility file to be unnecessarily imported
- Added
if-dependencies
tojob_description_schema
allowing it to be used with job transforms
- Refactored logic for importing sibling modules into new
util.python_path.import_sibling_modules
- Skip schema validation when
taskgraph.fast
is set - Improved performance of
schema.optionally_keyed_by
function
- Support for a
toolchain-env
key which gets added to dependent tasks' environment - Support for
generic-worker
toolchain tasks - Ability to execute commands using powershell in
run_task
transforms - Implicitly run toolchain scripts ending in
.ps1
with powershell
- Renaming
toolchain-artifact
now rebuilds toolchain tasks
- Git checkout cleaning regression
- Add a mechanism to bypass
--require-hashes
when installing pip dependencies inrun-task
- Decode gzipped artifacts when using
task-id=
orproject=
in the--parameters
flag - Stop defaulting to a dummy
TASKCLUSTER_ROOT_URL
and instead raise error - Some node dependency upgrades in the
index-task
image
- Ability to pass headers alongside requests in the
fetch-content
script
- An encoding error when using out of tree images
- Windows permissions errors in
run-task
script cleanup
- Add ability to run new types of verifications (e.g doc verifications)
- Allow custom
onExitStatus
values for generic-worker based tasks across all platforms
- Decision docker images updated to Ubuntu 20.04 and Mercurial 5.3.1
- Pass parameters into verifications functions
- Don't assume Taskcluster is enabled in generic-worker run-task based tasks
- Exception during local generation when generic-worker tasks exist
- Add pyenv to python docker image
- Point generic worker tasks to TC instance instead of proxy URL
- Fixed some tests for local development
- Decision tasks uploads
run-task
andfetch-content
scripts as artifacts
- Forward
description
andif-dependencies
keys to Task constructor
- An
--exclude-key
flag to the CLI for removing subsections of tasks - Concept of if-dependencies to optimization logic
- Optional description attribute to
Task
objects
- A minor refactor to optimization logic around logging
- Ability for
run-task
to install Python dependencies after cloning a repo
- An exception in default parameters if repo url doesn't contain slashes
- Support
taskgraph test-action-callback
inrun_task
transforms
- A bug with custom parameter defaults not being set when running 'taskgraph' locally
- Error in non UTF-8 locales + unicode in commit message
- User specified Taskcluster urls in environment are now normalized
- Minor refactor to requests session logic in util/taskcluster.py
- Set HGPLAIN environment variable for Mercurial commands in util/vcs.py
- Fix exception in default parameters when no git remote named "origin"
- Used repository root as default in
get_repository
rather than cwd - Retry vcs commands in run-task if they failed
- An import error with Python 3.10
- Search ancestor directories when instantiating repo in
get_repository
- Support specifying defaults to
extend_parameters_schema
utility - Added
beetmover
payload builder totask.py
transforms
- Fixed logging error when using
taskgraph --diff
- Various fixes to
Repository
utility class invcs.py
- Relaxed lower bound constraints of some dependencies
- Initial release