Closed Bug 1088238 Opened 10 years ago Closed 8 years ago

taskcluster-notify: Email notification component for tasks and task-graphs

Categories

(Taskcluster :: General, enhancement)

enhancement
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: jonasfj, Assigned: bstack, Mentored)

References

Details

Summary:
========
Really simple component listening to custom routes on exchanges, and sending an
email if a task has a specific custom route.
Hence, email notification for selected tasks on specific states.


Specification:
==============
We should have an email notification component that listens to the
following exchanges routing-patterns:

task-defined    (route.notify.#.when-defined.#)
task-pending    (route.notify.#.when-pending.#)
task-running    (route.notify.#.when-running.#)
task-completed  (route.notify.#.when-completed.#)
task-completed  (route.notify.#.when-completed-successfully.#)
task-completed  (route.notify.#.when-completed-unsuccessfully.#)
task-failed     (route.notify.#.when-failed.#)

task-graph-running   (route.notify.#.when-running.#)
task-graph-finished  (route.notify.#.when-finished.#)
task-graph-blocked   (route.notify.#.when-blocked.#)

When it gets is a message it should then load the task definition
and find the task.extra.notify.email, task.extra.notify.message
properties, which is then used to compose an email notification.

Notes:
 * The case of when-completed-(un)successfully, the message.success should
   obviously be consulted before a message is sent.
 
 * The task-defined|pending|running exchanges is mostly for completeness,
   but could also be useful to notify someone that a certain task has now started.

 * For task-graph-* messages, we need to add an extra field to task-graphs first.

 * We should use AWS SES to send the emails.

 * The task.extra.notify.message property could support variable substitution,
   but ideally it should just be small message and only part of the entire email
   that gets sent!


Usage:
======
To use get an email when if your task completes unsuccessfully or there
is a failure all you have to do is add a custom route as follows:
{
  routes: [
    "notify.when-failed.when-completed-unsuccessfully"
  ]
  payload: {...}
  ...
  extra: {
    notify: {
      email:    "jonasfj@mozilla.com",
      message:  "Hi, this task failed or completed unsuccessfully..."
    }
  }
} 

Remark, the mail will of course not just contain the message, but also
an explanation of why it was sent. As well as link to task inspector or
task-graph inspector.

To use this with task-graphs one should just add the routes to the
task-graph definition and define the extra fields on the task-graph.
It might be sufficient to only support tasks initially.


Use Cases
=========
 * Failures and unsuccessfully completion of periodic tasks can be hard to detect
   without email notification.

 * Sending the equivalent of the "You submitted to try"-emails.

 * Notification for nightly builds etc...

 * Notification for non-test/build tasks such as telemetry analysis tasks, if we
   ever convince people to use taskcluster for things like this.
Component: TaskCluster → General
Product: Testing → Taskcluster
@armenzg,
At Whistler you asked if I had plans for notifications. This is what they look like.
Maybe it won't be exactly like this...

---
Lately, I've been thinking that a email-confirm workerType that takes a payload with message
and question to ask... When user clicks link in email, the task is then resolved, completed/failed,
depending on answer.

Anyways, all these things are fairly similar.
Hi Jonas!
I don't recall at the moment but this sounds like a cool idea and easy for people to use.

Thanks for letting me know!
See Also: → 1186207
I started initial work on this a while ago:
https://github.com/taskcluster/taskcluster-notify

I haven't had time since... But anyone is welcome to pick it up.
See Also: → 1265871
Blocks: 1282762
Is anyone likely to look at this in this quarter?

See also bug 1275774.
See Also: → 1275774
bstack has it listed as a q3 goal.  I plan on speaking with him next week when I'm in SF about it.
Assignee: nobody → bstack
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.