mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
4b0bb51005
The email address used for notification on try was templated, but nothing actually evaluated the template. This applies the same templating that applies to the message to any emails specified. Differential Revision: https://phabricator.services.mozilla.com/D1297 --HG-- extra : source : dd32a78ddf2196436f2098b4bc8bd3dc5c77b526 extra : amend_source : 8eac858e2b658bb2d8c3dacabe4c7fa3c077d9bc
60 lines
2.1 KiB
Python
60 lines
2.1 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/.
|
|
"""
|
|
Add notifications via taskcluster-notify for release tasks
|
|
"""
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
from taskgraph.transforms.base import TransformSequence
|
|
from taskgraph.util.scriptworker import get_release_config
|
|
from taskgraph.util.schema import resolve_keyed_by
|
|
|
|
|
|
transforms = TransformSequence()
|
|
|
|
|
|
@transforms.add
|
|
def add_notifications(config, jobs):
|
|
release_config = get_release_config(config)
|
|
|
|
for job in jobs:
|
|
label = '{}-{}'.format(config.kind, job['name'])
|
|
|
|
notifications = job.get('notifications')
|
|
if notifications:
|
|
resolve_keyed_by(notifications, 'emails', label, project=config.params['project'])
|
|
emails = notifications['emails']
|
|
format_kwargs = dict(
|
|
task=job,
|
|
config=config.__dict__,
|
|
release_config=release_config,
|
|
)
|
|
subject = notifications['subject'].format(**format_kwargs)
|
|
message = notifications['message'].format(**format_kwargs)
|
|
emails = [email.format(**format_kwargs) for email in emails]
|
|
# Don't need this any more
|
|
del job['notifications']
|
|
|
|
# We only send mail on success to avoid messages like 'blah is in the
|
|
# candidates dir' when cancelling graphs, dummy job failure, etc
|
|
job.setdefault('routes', []).extend(
|
|
['notify.email.{}.on-completed'.format(email) for email in emails]
|
|
)
|
|
|
|
# Customize the email subject to include release name and build number
|
|
job.setdefault('extra', {}).update(
|
|
{
|
|
'notify': {
|
|
'email': {
|
|
'subject': subject,
|
|
}
|
|
}
|
|
}
|
|
)
|
|
if message:
|
|
job['extra']['notify']['email']['content'] = message
|
|
|
|
yield job
|