gecko-dev/taskcluster/taskgraph/transforms/upload_symbols.py
Ted Mielczarek 1120b5bb3e bug 1437577 - allow uploading symbols from any build type on try. r=dustin
Previously we would only generate upload-symbols tasks for nightly builds,
since we only want to upload symbols for builds we ship to users.

On try, developers may want to use the symbol server but very rarely want
to do nightly builds, so allow uploading symbols from any build type there.

MozReview-Commit-ID: IYs9mZii3DN

--HG--
extra : rebase_source : 15acb889510bb07ed3d29ea802997f11796dad9f
2018-04-12 08:49:43 -04:00

55 lines
2.2 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/.
"""
Transform the upload-symbols task description template,
taskcluster/ci/upload-symbols/job-template.yml
into an actual task description.
"""
from __future__ import absolute_import, print_function, unicode_literals
from taskgraph.transforms.base import TransformSequence
transforms = TransformSequence()
@transforms.add
def fill_template(config, tasks):
for task in tasks:
dep = task['dependent-task']
# Fill out the dynamic fields in the task description
task['label'] = dep.label + '-upload-symbols'
task['dependencies'] = {'build': dep.label}
task['worker']['env']['GECKO_HEAD_REPOSITORY'] = config.params['head_repository']
task['worker']['env']['GECKO_HEAD_REV'] = config.params['head_rev']
task['worker']['env']['SYMBOL_SECRET'] = task['worker']['env']['SYMBOL_SECRET'].format(
level=config.params['level'])
build_platform = dep.attributes.get('build_platform')
build_type = dep.attributes.get('build_type')
attributes = task.setdefault('attributes', {})
attributes['build_platform'] = build_platform
attributes['build_type'] = build_type
if dep.attributes.get('nightly'):
attributes['nightly'] = True
treeherder = task.get('treeherder', {})
th = dep.task.get('extra')['treeherder']
th_platform = dep.task['extra'].get('treeherder-platform',
"{}/{}".format(th['machine']['platform'], build_type))
treeherder.setdefault('platform', th_platform)
treeherder.setdefault('tier', th['tier'])
treeherder.setdefault('kind', th['jobKind'])
# Disambiguate the treeherder symbol.
build_sym = th['symbol']
sym = 'Sym' + (build_sym[1:] if build_sym.startswith('B') else build_sym)
treeherder.setdefault('symbol', sym)
task['treeherder'] = treeherder
# clear out the stuff that's not part of a task description
del task['dependent-task']
yield task