5 Task-graph generation takes a collection of parameters as input, in the form of
8 During decision-task processing, some of these parameters are supplied on the
9 command line or by environment variables. The decision task helpfully produces
10 a full parameters file as one of its output artifacts. The other ``mach
11 taskgraph`` commands can take this file as input. This can be very helpful
12 when working on a change to the task graph.
14 When experimenting with local runs of the task-graph generation, it is always
15 best to find a recent decision task's ``parameters.yml`` file, and modify that
16 file if necessary, rather than starting from scratch. This ensures you have a
17 complete set of parameters.
19 The properties of the parameters object are described here, divided roughly by
26 Whether or not this push is a "backstop" push. That is a push where all
27 builds and tests should run to ensure regressions aren't accidentally
31 The repository from which to do an initial clone, utilizing any available
35 The repository containing the changeset to be built. This may differ from
36 ``base_repository`` in cases where ``base_repository`` is likely to be cached
37 and only a few additional commits are needed from ``head_repository``.
40 The previous revision before ``head_rev`` got merged into. This can be a short revision string.
43 The revision to check out; this can be a short revision string
46 Reference where ``head_rev`` got merged into. It is usually a branch or a tag.
49 For Mercurial repositories, this is the same as ``head_rev``. For
50 git repositories, which do not allow pulling explicit revisions, this gives
51 the symbolic ref containing ``head_rev`` that should be pulled from
55 The tag attached to the revision, if any.
58 The list of all files added or modified by the push.
61 Email address indicating the person who made the push. Note that this
62 value may be forged and *must not* be relied on for authentication.
65 The try syntax in the commit message, if any.
68 The ID from the ``hg.mozilla.org`` pushlog
71 The timestamp of the push to the repository that triggered this decision
72 task. Expressed as an integer seconds since the UNIX epoch.
75 The mercurial branch where the revision lives in.
78 The timestamp of the build date. Defaults to ``pushdate`` and falls back to present time of
79 taskgraph invocation. Expressed as an integer seconds since the UNIX epoch.
82 A formatted timestamp of ``build_date``. Expressed as a string with the following
86 The type of repository, either ``hg`` or ``git``.
89 The ``tasks_for`` value used to generate the decision task.
95 Another name for what may otherwise be called tree or branch or
96 repository. This is the unqualified name, such as ``mozilla-central`` or
101 <https://www.mozilla.org/en-US/about/governance/policies/commit/access-policy/>`_
102 associated with this tree. This dictates the names of resources used in the
103 generated tasks, and those tasks will fail if it is incorrect.
109 The mode in which a try push is operating. This can be one of:
111 * ``"try_task_config"`` - Used to configure the taskgraph.
112 * ``"try_option_syntax"`` - Used when pushing to try with legacy try syntax.
113 * ``"try_auto"`` - Used to make try pushes behave more like a push on ``autoland``.
114 * ``"try_select"`` - Used by ``mach try`` to build a list of tasks locally.
115 * ``None`` - Not a try push or ``mach try release``.
118 The arguments given as try syntax (as a dictionary), or ``None`` if
119 ``try_mode`` is not ``try_option_syntax``.
122 The contents of the ``try_task_config.json`` file, or ``{}`` if
123 ``try_mode`` is not ``try_task_config``.
128 ``test_manifest_loader``
129 The test manifest loader to use as defined in ``taskgraph.util.chunking.manifest_loaders``.
134 The "target set" is the set of task labels which must be included in a task
135 graph. The task graph generation process will include any tasks required by
136 those in the target set, recursively. In a decision task, this set can be
137 specified programmatically using one of a variety of methods (e.g., parsing try
138 syntax or reading a project-specific configuration file).
140 ``enable_always_target``
141 Can either be a boolean or a list of kinds.
143 When ``True``, any task with the ``always_target`` attribute will be included
144 in the ``target_task_graph`` regardless of whether they were filtered out by
145 the ``target_tasks_method`` or not. Because they are not part of the
146 ``target_set``, they will still be eligible for optimization when the
147 ``optimize_target_tasks`` parameter is ``False``.
149 When specified as a list of kinds, only tasks with a matching kind will be
150 eligible for addition to the graph.
153 List of filter functions (from ``taskcluster/gecko_taskgraph/filter_tasks.py``) to
154 apply. This is usually defined internally, as filters are typically
157 ``target_tasks_method``
158 The method to use to determine the target task set. This is the suffix of
159 one of the functions in ``taskcluster/gecko_taskgraph/target_tasks.py``.
162 History of recent releases by platform and locale, used when generating
163 partial updates for nightly releases.
164 Suitable contents can be generated with ``mach release-history``,
165 which will print to the console by default.
170 ``optimize_strategies``
171 A python path of the form ``<module>:<object>`` containing a dictionary of
172 optimization strategies to use, overwriting the defaults.
174 ``optimize_target_tasks``
175 If true, then target tasks are eligible for optimization.
178 Specify tasks to not optimize out of the graph. This is a list of labels.
179 Any tasks in the graph matching one of the labels will not be optimized out
183 Specify tasks to optimize out of the graph. This is a dictionary of label to taskId.
184 Any tasks in the graph matching one of the labels will use the previously-run
185 taskId rather than submitting a new task.
191 Specify the release promotion build number.
194 Specify the version for release tasks.
197 Specify the application version for release tasks. For releases, this is often a less specific version number than ``version``.
200 Specify the next version for version bump tasks.
203 The type of release being promoted. One of "nightly", "beta", "esr115", "release-rc", or "release".
206 The time and date when a release is scheduled to live. This value is passed to Balrog.
208 ``release_enable_partner_repack``
209 Boolean which controls repacking vanilla Firefox builds for partners.
211 ``release_enable_partner_attribution``
212 Boolean which controls adding attribution to vanilla Firefox builds for partners.
214 ``release_enable_emefree``
215 Boolean which controls repacking vanilla Firefox builds into EME-free builds.
218 List of partners to repack or attribute if a subset of the whole config. A null value defaults to all.
220 ``release_partner_config``
221 Configuration for partner repacks & attribution, as well as EME-free repacks.
223 ``release_partner_build_number``
224 The 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.
227 The product that is being released.
229 ``required_signoffs``
230 A 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.
233 A dictionary of signoff keys to url values. These are the urls marking the corresponding ``required_signoffs`` as signed off.
240 Merge 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.
243 The clone/push URI of the source repository, such as https://hg.mozilla.org/mozilla-central
246 The clone/push URI of the target repository, such as https://hg.mozilla.org/releases/mozilla-beta
249 The firefoxtree alias of the source branch, such as 'central', 'beta'
252 The firefoxtree alias of the target branch, such as 'beta', 'release'
255 Don't push any results to target repositories.
262 The code review process needs to know the Phabricator Differential diff that
263 started the analysis. This parameter must start with `PHID-DIFF-`
269 Generate only the given kinds and their kind-dependencies. This is used for local inspection of the graph
270 and is not supported at run-time.