forked from mirrors/gecko-dev
33 lines
1.2 KiB
Python
33 lines
1.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/.
|
|
"""
|
|
This transform enables coalescing for tasks with scm level > 1, by defining
|
|
values for the coalesce settings of the job.
|
|
"""
|
|
|
|
from taskgraph.transforms.base import TransformSequence
|
|
from hashlib import sha256
|
|
|
|
transforms = TransformSequence()
|
|
@transforms.add
|
|
def enable_coalescing(config, jobs):
|
|
"""
|
|
This transform enables coalescing for tasks with scm level > 1, setting the
|
|
name to be equal to the the first 20 chars of the sha256 of the task name
|
|
(label). The hashing is simply used to keep the name short, unique, and
|
|
alphanumeric, since it is used in AMQP routing keys.
|
|
|
|
Note, the coalescing keys themselves are not intended to be readable
|
|
strings or embed information. The tasks they represent contain all relevant
|
|
metadata.
|
|
"""
|
|
if int(config.params['level']) <= 1:
|
|
return
|
|
for job in jobs:
|
|
job['coalesce'] = {
|
|
'job-identifier': sha256(job["label"]).hexdigest()[:20],
|
|
'age': 3600,
|
|
'size': 5,
|
|
}
|
|
yield job
|