bug 1423081 - add release balrog support. r=callek
MozReview-Commit-ID: 4P0E9hf3rIs
--- a/taskcluster/ci/balrog/kind.yml
+++ b/taskcluster/ci/balrog/kind.yml
@@ -12,8 +12,51 @@ transforms:
kind-dependencies:
- beetmover
- beetmover-l10n
- beetmover-repackage
only-for-attributes:
- nightly
- signed
+
+job-template:
+ notifications:
+ completed:
+ subject: "COMPLETED: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ message: "COMPLETED: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ plugins:
+ by-project:
+ mozilla-beta: ["log_collect"]
+ mozilla-release: ["log_collect"]
+ default: []
+
+ failed:
+ subject: "FAILED: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ message: "FAILED: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ plugins:
+ by-project:
+ mozilla-beta: ["log_collect", "ses"]
+ mozilla-release: ["log_collect", "ses"]
+ default: ["ses"]
+ emails:
+ by-project:
+ mozilla-beta: ["release-automation-notifications@mozilla.com"]
+ mozilla-release: ["release-automation-notifications@mozilla.com"]
+ try: ["{task_def[metadata][owner]}"]
+ maple: ["release+tcstaging@mozilla.com"]
+ default: []
+
+ exception:
+ subject: "EXCEPTION: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ message: "EXCEPTION: [{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]}] {task_def[metadata][name]} task"
+ plugins:
+ by-project:
+ mozilla-beta: ["log_collect", "ses"]
+ mozilla-release: ["log_collect", "ses"]
+ default: ["ses"]
+ emails:
+ by-project:
+ mozilla-beta: ["release-automation-notifications@mozilla.com"]
+ mozilla-release: ["release-automation-notifications@mozilla.com"]
+ try: ["{task_def[metadata][owner]}"]
+ maple: ["release+tcstaging@mozilla.com"]
+ default: []
--- a/taskcluster/taskgraph/transforms/balrog.py
+++ b/taskcluster/taskgraph/transforms/balrog.py
@@ -6,17 +6,18 @@ Transform the beetmover task into an act
"""
from __future__ import absolute_import, print_function, unicode_literals
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.attributes import copy_attributes_from_dependent_job
from taskgraph.util.schema import validate_schema, Schema
from taskgraph.util.scriptworker import (get_balrog_server_scope,
- get_balrog_channel_scopes)
+ get_balrog_channel_scopes,
+ get_phase)
from taskgraph.transforms.task import task_description_schema
from voluptuous import Any, Required, Optional
# Voluptuous uses marker objects as dictionary *keys*, but they are not
# comparable, so we cast all of the keys back to regular strings
task_description_schema = {str(k): v for k, v in task_description_schema.schema.iteritems()}
@@ -33,16 +34,23 @@ balrog_description_schema = Schema({
# unique label to describe this balrog task, defaults to balrog-{dep.label}
Optional('label'): basestring,
# treeherder is allowed here to override any defaults we use for beetmover. See
# taskcluster/taskgraph/transforms/task.py for the schema details, and the
# below transforms for defaults of various values.
Optional('treeherder'): task_description_schema['treeherder'],
+
+ # Shipping product / phase
+ Optional('shipping-product'): task_description_schema['shipping-product'],
+ Optional('shipping-phase'): task_description_schema['shipping-phase'],
+
+ # Notifications
+ Optional('notifications'): task_description_schema['notifications'],
})
@transforms.add
def validate(config, jobs):
for job in jobs:
label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
yield validate_schema(
@@ -88,25 +96,29 @@ def make_task_description(config, jobs):
"taskType": "beetmover",
"paths": [
"public/manifest.json"
],
}]
server_scope = get_balrog_server_scope(config)
channel_scopes = get_balrog_channel_scopes(config)
+ phase = get_phase(config)
task = {
'label': label,
'description': description,
'worker-type': 'scriptworker-prov-v1/balrogworker-v1',
'worker': {
'implementation': 'balrog',
'upstream-artifacts': upstream_artifacts,
},
'scopes': [server_scope] + channel_scopes,
'dependencies': {'beetmover': dep_job.label},
'attributes': attributes,
'run-on-projects': dep_job.attributes.get('run_on_projects'),
'treeherder': treeherder,
+ 'shipping-phase': job.get('shipping-phase', phase),
+ 'shipping-product': job.get('shipping-product'),
+ 'notifications': job.get('notifications'),
}
yield task