Parameters
Task-graph generation takes a collection of parameters as input, in the form of a JSON or YAML file.
During decision-task processing, some of these parameters are supplied on the
command line or by environment variables. The decision task helpfully produces
a full parameters file as one of its output artifacts. The other mach
taskgraph commands can take this file as input. This can be very helpful
when working on a change to the task graph.
When experimenting with local runs of the task-graph generation, it is always
best to find a recent decision task’s parameters.yml file, and modify that
file if necessary, rather than starting from scratch. This ensures you have a
complete set of parameters.
The properties of the parameters object are described here, divided roughly by topic.
Push Information
android_perftest_backstopWhether or not this push is a “backstop” push for android performance tests. That is a push where all android performance tests should run to ensure regressions aren’t accidentally missed.
backstopWhether or not this push is a “backstop” push. That is a push where all builds and tests should run to ensure regressions aren’t accidentally missed.
base_repositoryThe repository from which to do an initial clone, utilizing any available caching.
head_repositoryThe repository containing the changeset to be built. This may differ from
base_repositoryin cases wherebase_repositoryis likely to be cached and only a few additional commits are needed fromhead_repository.base_revThe previous revision before
head_revgot merged into. This can be a short revision string.head_revThe revision to check out; this can be a short revision string
head_git_revOptionally, the git commit corresponding to the head_rev when it’s in a Mercurial repository.
base_refReference where
head_revgot merged into. It is usually a branch or a tag.head_refFor Mercurial repositories, this is the same as
head_rev. For git repositories, which do not allow pulling explicit revisions, this gives the symbolic ref containinghead_revthat should be pulled fromhead_repository.head_tagThe tag attached to the revision, if any.
files_changedThe list of all files added or modified by the push.
ownerEmail address indicating the person who made the push. Note that this value may be forged and must not be relied on for authentication.
messageThe try syntax in the commit message, if any.
pushlog_idThe ID from the
hg.mozilla.orgpushlogpushdateThe timestamp of the push to the repository that triggered this decision task. Expressed as an integer seconds since the UNIX epoch.
hg_branchThe mercurial branch where the revision lives in.
build_dateThe timestamp of the build date. Defaults to
pushdateand falls back to present time of taskgraph invocation. Expressed as an integer seconds since the UNIX epoch.moz_build_dateA formatted timestamp of
build_date. Expressed as a string with the following format: %Y%m%d%H%M%Srepository_typeThe type of repository, either
hgorgit.tasks_forThe
tasks_forvalue used to generate the decision task.
Tree Information
projectAnother name for what may otherwise be called tree or branch or repository. This is the unqualified name, such as
mozilla-centralorcedar.levelThe SCM level associated with this tree. This dictates the names of resources used in the generated tasks, and those tasks will fail if it is incorrect.
Try Configuration
try_modeThe mode in which a try push is operating. This can be one of:
"try_task_config"- Used to configure the taskgraph."try_auto"- Used to make try pushes behave more like a push onautoland."try_select"- Used bymach tryto build a list of tasks locally.None- Not a try push ormach try release.
try_task_configThe contents of the
try_task_config.jsonfile, or{}iftry_modeis nottry_task_config.
Test Configuration
test_manifest_loaderThe test manifest loader to use as defined in
taskgraph.util.chunking.manifest_loaders.
Target Set
The “target set” is the set of task labels which must be included in a task graph. The task graph generation process will include any tasks required by those in the target set, recursively. In a decision task, this set can be specified programmatically using one of a variety of methods (e.g., parsing try syntax or reading a project-specific configuration file).
enable_always_targetCan either be a boolean or a list of kinds.
When
True, any task with thealways_targetattribute will be included in thetarget_task_graphregardless of whether they were filtered out by thetarget_tasks_methodor not. Because they are not part of thetarget_set, they will still be eligible for optimization when theoptimize_target_tasksparameter isFalse.When specified as a list of kinds, only tasks with a matching kind will be eligible for addition to the graph.
filtersList of filter functions (from
taskcluster/gecko_taskgraph/filter_tasks.py) to apply. This is usually defined internally, as filters are typically global.target_tasks_methodThe method to use to determine the target task set. This is the suffix of one of the functions in
taskcluster/gecko_taskgraph/target_tasks.py.release_historyHistory of recent releases by platform and locale, used when generating partial updates for nightly releases. Suitable contents can be generated with
mach release-history, which will print to the console by default.
Optimization
optimize_strategiesA python path of the form
<module>:<object>containing a dictionary of optimization strategies to use, overwriting the defaults.optimize_target_tasksIf true, then target tasks are eligible for optimization.
do_not_optimizeSpecify tasks to not optimize out of the graph. This is a list of labels. Any tasks in the graph matching one of the labels will not be optimized out of the graph.
existing_tasksSpecify tasks to optimize out of the graph. This is a dictionary of label to taskId. Any tasks in the graph matching one of the labels will use the previously-run taskId rather than submitting a new task.
Release Promotion
build_numberSpecify the release promotion build number.
versionSpecify the version for release tasks.
app_versionSpecify the application version for release tasks. For releases, this is often a less specific version number than
version.next_versionSpecify the next version for version bump tasks.
release_typeThe type of release being promoted. One of “nightly”, “beta”, “esr115”, “esr128”, “esr140”, “release-rc”, or “release”.
release_etaThe time and date when a release is scheduled to live. This value is passed to Balrog.
release_enable_partner_repackBoolean which controls repacking vanilla Firefox builds for partners.
release_enable_partner_attributionBoolean which controls adding attribution to vanilla Firefox builds for partners.
release_enable_emefreeBoolean which controls repacking vanilla Firefox builds into EME-free builds.
release_partnersList of partners to repack or attribute if a subset of the whole config. A null value defaults to all.
release_partner_configConfiguration for partner repacks & attribution, as well as EME-free repacks.
release_partner_build_numberThe build number for partner repacks. We sometimes have multiple partner build numbers per release build number; this parameter lets us bump them independently. Defaults to 1.
release_productThe product that is being released.
required_signoffsA list of signoffs that are required for this release promotion flavor. If specified, and if the corresponding signoff_urls url isn’t specified, tasks that require these signoffs will not be scheduled.
signoff_urlsA dictionary of signoff keys to url values. These are the urls marking the corresponding
required_signoffsas signed off.partial_versionsA list of previous versions that partial updates should be generated for, in the form of X.YbuildN, eg: [“138.0.1build1”, “137.0build2”].
Repository Merge Day
merge_configMerge config describes the repository merge behaviour, using an alias to cover which set of file replacements and version increments are required, along with overrides for the source and target repository URIs.
source_repoThe clone/push URI of the source repository, such as https://hg.mozilla.org/mozilla-central
target_repoThe clone/push URI of the target repository, such as https://hg.mozilla.org/releases/mozilla-beta
source_branchThe firefoxtree alias of the source branch, such as ‘central’, ‘beta’
target_branchThe firefoxtree alias of the target branch, such as ‘beta’, ‘release’
force-dry-runDon’t push any results to target repositories.
Code Review
phabricator_diffThe code review process needs to know the Phabricator Differential diff that started the analysis. This parameter must start with PHID-DIFF-
Local configuration
target-kindsGenerate only the given kinds and their kind-dependencies. This is used for local inspection of the graph and is not supported at run-time.