taskcluster/translations_taskgraph/transforms/skip_unless_inference_changed.py (19 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This transform sequence will remove all jobs unless at least one inference # impacting thing (an inference script or relevant Taskcluster code) has changed # (This is done with the `files_changed` helper, which uses data in the # parameters to determine files changed between the `base` and `head` revisions.) # When upstream taskgraph supports better selection (https://github.com/taskcluster/taskgraph/issues/369) # this can be replaced with it. import os from pathlib import Path from taskgraph.transforms.base import TransformSequence KIND_DIR = Path(__file__).parent.parent.parent / "kinds" # Kinds are slightly special - there are some kinds that don't affect inference, # and changing them shouldn't force inference to run. INCLUDE_KINDS = ["inference"] # Touching any file in any of these directories is considered an inference change INFERENCE_DIRS = [ "inference/**", "taskcluster/docker/inference/**", ] INFERENCE_DIRS.extend( f"taskcluster/kinds/{kind}" for kind in os.listdir(KIND_DIR) if kind in INCLUDE_KINDS ) transforms = TransformSequence() @transforms.add def skip_unless_inference_changed(config, jobs): for job in jobs: job.setdefault("optimization", {}) job["optimization"]["skip-unless-changed"] = INFERENCE_DIRS yield job