"Fossies" - the Fresh Open Source Software Archive

Member "firefox-69.0.1/taskcluster/docs/optimization.rst" (17 Sep 2019, 1970 Bytes) of package /linux/www/firefox-69.0.1.source.tar.xz:

As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format). Alternatively you can here view or download the uninterpreted source code file. A member file download can also be achieved by clicking within a package contents listing on the according byte size field.


The objective of optimization to remove as many tasks from the graph as possible, as efficiently as possible, thereby delivering useful results as quickly as possible. For example, ideally if only a test script is modified in a push, then the resulting graph contains only the corresponding test suite task.

A task is said to be "optimized" when it is either replaced with an equivalent, already-existing task, or dropped from the graph entirely.

Optimization Strategies

Each task has a single named optimization strategy, and can provide an argument to that strategy. Each strategy is defined as an OptimizationStrategy instance in taskcluster/taskgraph/optimization.py.

Each task has a task.optimization property describing the optimization strategy that applies, specified as a dictionary mapping strategy to argument. For example:

task.optimization = {'skip-unless-changed': ['js/**', 'tests/**']}

Strategy implementations are shared across all tasks, so they may cache commonly-used information as instance variables.

Optimizing Target Tasks

In some cases, such as try pushes, tasks in the target task set have been explicitly requested and are thus excluded from optimization. In other cases, the target task set is almost the entire task graph, so targeted tasks are considered for optimization. This behavior is controlled with the optimize_target_tasks parameter.

More Information

optimization-process optimization-schedules