We add the following command line options to Taskcluster try syntax: --spsProfile - enable profile mode. --rebuild-talos <N> - retrigger talos tests N times. --setenv <VAR>=<val> - add extra environments variables. --tag <TAG> - run tests only the tag TAG. --no-retry - doesn't retry failed jobs. We have a chicken-egg problem, as we first generate the full task graph and then parse the try message. But the graph generation step needs to know the try message to process the aforementioned options. The solution is to parse the message before graph generation and then pass the command line options to the transforms. Then, each transform can look at the option that interests it and process it accordingly. The message parse function is configured in kind.yml, which gives some flexibility for future implementations of alternative syntaxes. MozReview-Commit-ID: GPFdi0FD6Vn
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
# 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/.
|
|
"""
|
|
Apply some defaults and minor modifications to the jobs defined in the build
|
|
kind.
|
|
"""
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
from taskgraph.transforms.base import TransformSequence
|
|
|
|
transforms = TransformSequence()
|
|
|
|
|
|
@transforms.add
|
|
def set_defaults(config, jobs):
|
|
"""Set defaults, including those that differ per worker implementation"""
|
|
for job in jobs:
|
|
job['treeherder'].setdefault('kind', 'build')
|
|
job['treeherder'].setdefault('tier', 1)
|
|
job.setdefault('needs-sccache', True)
|
|
if job['worker']['implementation'] in ('docker-worker', 'docker-engine'):
|
|
job['worker'].setdefault('docker-image', {'in-tree': 'desktop-build'})
|
|
job['worker']['chain-of-trust'] = True
|
|
job.setdefault('extra', {})
|
|
job['extra'].setdefault('chainOfTrust', {})
|
|
job['extra']['chainOfTrust'].setdefault('inputs', {})
|
|
job['extra']['chainOfTrust']['inputs']['docker-image'] = {
|
|
"task-reference": "<docker-image>"
|
|
}
|
|
job['worker'].setdefault('env', {})
|
|
yield job
|
|
|
|
|
|
@transforms.add
|
|
def set_env(config, jobs):
|
|
"""Set extra environment variables from try command line."""
|
|
for job in jobs:
|
|
env = config.config['args'].env
|
|
if env:
|
|
job_env = job['worker']['env']
|
|
job_env.update(dict(x.split('=') for x in env))
|
|
yield job
|