Bug 1425571 - switch to taskcluster-notify for all but the notify tasks, r=aki
authorNick Thomas <nthomas@mozilla.com>
Wed, 14 Feb 2018 12:57:50 +1300
changeset 464147 fe558d76faddcf10d0c0da32ac84f1289c9a7003
parent 464146 e9416c0efa81b9a7004e50965be95e8064035ff4
child 464148 d0d8c94efadf5dd4006a0bd28a7cedeb06e5fd29
push id177
push userfmarier@mozilla.com
push dateThu, 24 May 2018 16:58:35 +0000
reviewersaki
bugs1425571
milestone59.0
Bug 1425571 - switch to taskcluster-notify for all but the notify tasks, r=aki MozReview-Commit-ID: EDmlXF7SIdv
taskcluster/ci/balrog/kind.yml
taskcluster/ci/beetmover-cdns/kind.yml
taskcluster/ci/beetmover-checksums/kind.yml
taskcluster/ci/beetmover-repackage/kind.yml
taskcluster/ci/beetmover-source/kind.yml
taskcluster/ci/beetmover/kind.yml
taskcluster/ci/build-signing/kind.yml
taskcluster/ci/build/kind.yml
taskcluster/ci/checksums-signing/kind.yml
taskcluster/ci/google-play-strings/kind.yml
taskcluster/ci/nightly-l10n-signing/kind.yml
taskcluster/ci/nightly-l10n/kind.yml
taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
taskcluster/ci/post-beetmover-dummy/kind.yml
taskcluster/ci/push-apk-breakpoint/kind.yml
taskcluster/ci/push-apk/kind.yml
taskcluster/ci/release-balrog-publishing/kind.yml
taskcluster/ci/release-binary-transparency/kind.yml
taskcluster/ci/release-bouncer-aliases/kind.yml
taskcluster/ci/release-bouncer-sub/kind.yml
taskcluster/ci/release-final-verify/kind.yml
taskcluster/ci/release-generate-checksums/kind.yml
taskcluster/ci/release-mark-as-shipped/kind.yml
taskcluster/ci/release-notify-promote/kind.yml
taskcluster/ci/release-notify-push/kind.yml
taskcluster/ci/release-notify-ship/kind.yml
taskcluster/ci/release-partner-repack/kind.yml
taskcluster/ci/release-secondary-balrog-publishing/kind.yml
taskcluster/ci/release-secondary-final-verify/kind.yml
taskcluster/ci/release-secondary-notify-ship/kind.yml
taskcluster/ci/release-snap/kind.yml
taskcluster/ci/release-source-signing/kind.yml
taskcluster/ci/release-source/kind.yml
taskcluster/ci/release-update-verify/kind.yml
taskcluster/ci/release-updates-builder/kind.yml
taskcluster/ci/release-uptake-monitoring/kind.yml
taskcluster/ci/release-version-bump/kind.yml
taskcluster/ci/repackage-l10n/kind.yml
taskcluster/ci/repackage-signing/kind.yml
taskcluster/taskgraph/transforms/beetmover_cdns.py
taskcluster/taskgraph/transforms/release_notifications.py
taskcluster/taskgraph/util/scriptworker.py
--- a/taskcluster/ci/balrog/kind.yml
+++ b/taskcluster/ci/balrog/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.balrog:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover
    - beetmover-l10n
    - beetmover-repackage
 
 only-for-attributes:
--- a/taskcluster/ci/beetmover-cdns/kind.yml
+++ b/taskcluster/ci/beetmover-cdns/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.beetmover_cdns:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-generate-checksums
 
 job-defaults:
    worker-type:
       by-project:
--- a/taskcluster/ci/beetmover-checksums/kind.yml
+++ b/taskcluster/ci/beetmover-checksums/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.beetmover_checksums:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - checksums-signing
 
 only-for-attributes:
    - nightly
 
--- a/taskcluster/ci/beetmover-repackage/kind.yml
+++ b/taskcluster/ci/beetmover-repackage/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.beetmover_repackage_l10n:transforms
    - taskgraph.transforms.beetmover_repackage:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - repackage-signing
    - partials-signing
 
 only-for-build-platforms:
    - linux-nightly/opt
--- a/taskcluster/ci/beetmover-source/kind.yml
+++ b/taskcluster/ci/beetmover-source/kind.yml
@@ -3,15 +3,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.beetmover:transforms
    - taskgraph.transforms.beetmover_source:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-source-signing
 
 job-template:
    shipping-phase: promote
--- a/taskcluster/ci/beetmover/kind.yml
+++ b/taskcluster/ci/beetmover/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.beetmover:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - build-signing
 
 only-for-attributes:
    - nightly
 
--- a/taskcluster/ci/build-signing/kind.yml
+++ b/taskcluster/ci/build-signing/kind.yml
@@ -3,12 +3,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.build_signing:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.build_signing:transforms
    - taskgraph.transforms.signing:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - build
--- a/taskcluster/ci/build/kind.yml
+++ b/taskcluster/ci/build/kind.yml
@@ -7,16 +7,17 @@ loader: taskgraph.loader.transform:loade
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build:transforms
     - taskgraph.transforms.build_attrs:transforms
     - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
+    - taskgraph.transforms.release_notifications:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 jobs-from:
     - android.yml
     - android-stuff.yml
     - linux.yml
     - macosx.yml
--- a/taskcluster/ci/checksums-signing/kind.yml
+++ b/taskcluster/ci/checksums-signing/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.checksums_signing:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover
    - beetmover-l10n
    - beetmover-repackage
 
 only-for-attributes:
--- a/taskcluster/ci/google-play-strings/kind.yml
+++ b/taskcluster/ci/google-play-strings/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.google_play_strings:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 jobs:
    google-play-strings:
       description: Download strings to display on Google Play from https://l10n.mozilla-community.org/stores_l10n/
       attributes:
          build_type: google_play_strings
          build_platform: android-nightly
--- a/taskcluster/ci/nightly-l10n-signing/kind.yml
+++ b/taskcluster/ci/nightly-l10n-signing/kind.yml
@@ -3,15 +3,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.nightly_l10n_signing:transforms
    - taskgraph.transforms.signing:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - nightly-l10n
 
 only-for-attributes:
    - nightly
--- a/taskcluster/ci/nightly-l10n/kind.yml
+++ b/taskcluster/ci/nightly-l10n/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.l10n:transforms
    - taskgraph.transforms.use_toolchains:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - build
    - toolchain
 
 only-for-build-platforms:
    - linux64-nightly/opt
--- a/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
+++ b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.reverse_chunk_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-checksums
 
 jobs:
    firefox-promote:
       name: post-beetmover-checksums-dummy
--- a/taskcluster/ci/post-beetmover-dummy/kind.yml
+++ b/taskcluster/ci/post-beetmover-dummy/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.reverse_chunk_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-checksums
    - beetmover-repackage
    # Fennec doesn't have beetmover-{checksums,repackage}, so
    # also depend on vanilla beetmover.
    - beetmover
--- a/taskcluster/ci/push-apk-breakpoint/kind.yml
+++ b/taskcluster/ci/push-apk-breakpoint/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.push_apk:loader
 
 transforms:
     - taskgraph.transforms.push_apk_breakpoint:transforms
+    - taskgraph.transforms.release_notifications:transforms
     - taskgraph.transforms.task:transforms
 
 kind-dependencies:
     - build-signing
 
 jobs:
     android-push-apk-breakpoint/opt:
         description: PushApk breakpoint. Decides whether APK should be published onto Google Play Store
--- a/taskcluster/ci/push-apk/kind.yml
+++ b/taskcluster/ci/push-apk/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.push_apk:loader
 
 transforms:
    - taskgraph.transforms.push_apk:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - build-signing
    - google-play-strings
    - push-apk-breakpoint
 
 jobs:
--- a/taskcluster/ci/release-balrog-publishing/kind.yml
+++ b/taskcluster/ci/release-balrog-publishing/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_balrog_publishing:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-uptake-monitoring
 
 job-defaults:
    description: Schedule publishing in balrog
    worker-type: buildbot-bridge/buildbot-bridge
--- a/taskcluster/ci/release-binary-transparency/kind.yml
+++ b/taskcluster/ci/release-binary-transparency/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - post-beetmover-checksums-dummy
 
 job-defaults:
    name: release-binary-transparency
    description: Binary transparency to issue a certificate
--- a/taskcluster/ci/release-bouncer-aliases/kind.yml
+++ b/taskcluster/ci/release-bouncer-aliases/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-uptake-monitoring
 
 job-defaults:
    description: Update bouncer aliases job
    worker-type: buildbot-bridge/buildbot-bridge
--- a/taskcluster/ci/release-bouncer-sub/kind.yml
+++ b/taskcluster/ci/release-bouncer-sub/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 job-defaults:
    description: release bouncer submission job
    worker-type: buildbot-bridge/buildbot-bridge
    run-on-projects: []
    shipping-phase: promote
    index:
--- a/taskcluster/ci/release-final-verify/kind.yml
+++ b/taskcluster/ci/release-final-verify/kind.yml
@@ -5,16 +5,17 @@
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
    - release-uptake-monitoring
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.final_verify:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 job-defaults:
    name: final-verify
    run-on-projects: []  # to make sure this never runs as part of CI
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
       implementation: docker-worker
--- a/taskcluster/ci/release-generate-checksums/kind.yml
+++ b/taskcluster/ci/release-generate-checksums/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-source
    - post-beetmover-checksums-dummy
 
 job-defaults:
    description: generates checksums
--- a/taskcluster/ci/release-mark-as-shipped/kind.yml
+++ b/taskcluster/ci/release-mark-as-shipped/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_mark_as_shipped:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - push-apk
    - release-balrog-publishing
    - release-bouncer-aliases
    - release-version-bump
 
--- a/taskcluster/ci/release-notify-promote/kind.yml
+++ b/taskcluster/ci/release-notify-promote/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - post-beetmover-dummy
    - release-bouncer-sub
 
 job-defaults:
    name: notify-release-drivers-promote
--- a/taskcluster/ci/release-notify-push/kind.yml
+++ b/taskcluster/ci/release-notify-push/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-cdns
 
 job-defaults:
    name: notify-release-drivers-push
    description: Sends email to release-drivers telling release was pushed.
--- a/taskcluster/ci/release-notify-ship/kind.yml
+++ b/taskcluster/ci/release-notify-ship/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - push-apk
    - release-balrog-publishing
    - release-bouncer-aliases
    - release-version-bump
    - release-mark-as-shipped
--- a/taskcluster/ci/release-partner-repack/kind.yml
+++ b/taskcluster/ci/release-partner-repack/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.partner_repack:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - post-beetmover-dummy
 
 job-defaults:
    description: Release Promotion partner repacks
    worker-type: buildbot-bridge/buildbot-bridge
--- a/taskcluster/ci/release-secondary-balrog-publishing/kind.yml
+++ b/taskcluster/ci/release-secondary-balrog-publishing/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_balrog_publishing:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - post-balrog-dummy
    - post-beetmover-dummy
    - release-updates-builder
 
 job-defaults:
--- a/taskcluster/ci/release-secondary-final-verify/kind.yml
+++ b/taskcluster/ci/release-secondary-final-verify/kind.yml
@@ -7,16 +7,17 @@ loader: taskgraph.loader.transform:loade
 kind-dependencies:
    - post-balrog-dummy
    - post-beetmover-dummy
    - release-updates-builder
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.final_verify:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 job-defaults:
    name: secondary-final-verify
    run-on-projects: []  # to make sure this never runs as part of CI
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
       implementation: docker-worker
--- a/taskcluster/ci/release-secondary-notify-ship/kind.yml
+++ b/taskcluster/ci/release-secondary-notify-ship/kind.yml
@@ -1,16 +1,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-secondary-balrog-publishing
    - push-apk
 
 job-defaults:
    name: notify-release-drivers-ship
--- a/taskcluster/ci/release-snap/kind.yml
+++ b/taskcluster/ci/release-snap/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_snap:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - post-beetmover-dummy
 
 job-defaults:
    description: Generates snap image
    run-on-projects: []  # to make sure this never runs as part of CI
--- a/taskcluster/ci/release-source-signing/kind.yml
+++ b/taskcluster/ci/release-source-signing/kind.yml
@@ -3,15 +3,16 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.build_signing:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.build_signing:transforms
    - taskgraph.transforms.signing:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - release-source
 
 job-template:
    shipping-phase: promote
--- a/taskcluster/ci/release-source/kind.yml
+++ b/taskcluster/ci/release-source/kind.yml
@@ -7,16 +7,17 @@ loader: taskgraph.loader.transform:loade
 kind-dependencies:
    - toolchain
 
 transforms:
    - taskgraph.transforms.build:transforms
    - taskgraph.transforms.build_attrs:transforms
    - taskgraph.transforms.build_lints:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 jobs-from:
    - source.yml
 
 job-defaults:
    shipping-phase: promote
    notifications:
--- a/taskcluster/ci/release-update-verify/kind.yml
+++ b/taskcluster/ci/release-update-verify/kind.yml
@@ -7,16 +7,17 @@ loader: taskgraph.loader.transform:loade
 kind-dependencies:
    - post-balrog-dummy
    - post-beetmover-dummy
    - release-updates-builder
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.update_verify:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 job-defaults:
    name: update-verify
    run-on-projects: []  # to make sure this never runs as part of CI
    shipping-phase: promote
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
--- a/taskcluster/ci/release-updates-builder/kind.yml
+++ b/taskcluster/ci/release-updates-builder/kind.yml
@@ -7,16 +7,17 @@ loader: taskgraph.loader.transform:loade
 kind-dependencies:
    # For the $platform_info.txt files.
    - post-beetmover-dummy
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_updates:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 job-defaults:
    name: updates
    run-on-projects: []  # to make sure this never runs in CI
    shipping-phase: promote
    worker-type: buildbot-bridge/buildbot-bridge
    run:
--- a/taskcluster/ci/release-uptake-monitoring/kind.yml
+++ b/taskcluster/ci/release-uptake-monitoring/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-cdns
 
 job-defaults:
    description: Uptake monitoring job
    worker-type: buildbot-bridge/buildbot-bridge
--- a/taskcluster/ci/release-version-bump/kind.yml
+++ b/taskcluster/ci/release-version-bump/kind.yml
@@ -2,16 +2,17 @@
 # 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/.
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - beetmover-cdns
 
 job-defaults:
    description: Release Promotion version bump
    worker-type: buildbot-bridge/buildbot-bridge
--- a/taskcluster/ci/repackage-l10n/kind.yml
+++ b/taskcluster/ci/repackage-l10n/kind.yml
@@ -5,16 +5,17 @@
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.repackage_l10n:transforms
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.repackage:transforms
    - taskgraph.transforms.use_toolchains:transforms
    - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - nightly-l10n-signing
    - toolchain
 
 only-for-build-platforms:
    - linux-nightly/opt
--- a/taskcluster/ci/repackage-signing/kind.yml
+++ b/taskcluster/ci/repackage-signing/kind.yml
@@ -3,16 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 loader: taskgraph.loader.single_dep:loader
 
 transforms:
    - taskgraph.transforms.name_sanity:transforms
    - taskgraph.transforms.repackage_signing:transforms
    - taskgraph.transforms.repackage_routes:transforms
+   - taskgraph.transforms.release_notifications:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
    - repackage
    - repackage-l10n
 
 only-for-build-platforms:
    - linux-nightly/opt
--- a/taskcluster/taskgraph/transforms/beetmover_cdns.py
+++ b/taskcluster/taskgraph/transforms/beetmover_cdns.py
@@ -39,16 +39,17 @@ beetmover_cdns_description_schema = Sche
     Optional('run-on-projects'): task_description_schema['run-on-projects'],
     Required('worker-type'): optionally_keyed_by('project', basestring),
     Optional('dependencies'): {basestring: taskref_or_string},
     Optional('index'): {basestring: basestring},
     Optional('routes'): [basestring],
     Required('shipping-phase'): task_description_schema['shipping-phase'],
     Required('shipping-product'): task_description_schema['shipping-product'],
     Optional('notifications'): task_description_schema['notifications'],
+    Optional('extra'): task_description_schema['extra'],
 })
 
 
 @transforms.add
 def validate(config, jobs):
     for job in jobs:
         label = job['name']
         validate_schema(
@@ -88,17 +89,19 @@ def make_beetmover_cdns_description(conf
             'scopes': [bucket_scope, action_scope],
             'product': job['product'],
             'dependencies': job['dependencies'],
             'attributes': job.get('attributes', {}),
             'run-on-projects': job.get('run-on-projects'),
             'treeherder': treeherder,
             'shipping-phase': job.get('shipping-phase', 'push'),
             'shipping-product': job.get('shipping-product'),
-            'notifications': job.get('notifications'),
+            'notifications': job.get('notifications', {}),
+            'routes': job.get('routes', []),
+            'extra': job.get('extra', {}),
         }
 
         yield task
 
 
 @transforms.add
 def make_beetmover_cdns_worker(config, jobs):
     for job in jobs:
new file mode 100644
--- /dev/null
+++ b/taskcluster/taskgraph/transforms/release_notifications.py
@@ -0,0 +1,76 @@
+# 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, RELEASE_NOTIFICATION_PHASES
+
+
+transforms = TransformSequence()
+
+EMAIL_DESTINATIONS = {
+    'mozilla-beta': ["release-automation-notifications@mozilla.com"],
+    'mozilla-release': ["release-automation-notifications@mozilla.com"],
+    'mozilla-esr60': ["release-automation-notifications@mozilla.com"],
+    'maple': ["release+tcstaging@mozilla.com"],
+    'jamun': ["release+tcstaging@mozilla.com"],
+    # otherwise []
+}
+
+# Only notify on tasks that have issues
+DEFAULT_ROUTES = [
+    'notify.email.{email_dest}.on-failed',
+    'notify.email.{email_dest}.on-exception',
+]
+
+SUBJECT_TEMPLATE = "${{status.state}}: [{shipping_product} {release_config[version]} " + \
+                   "build{release_config[build_number]}/{config[params][project]}] {label}"
+
+
+@transforms.add
+def add_notifications(config, jobs):
+    release_config = get_release_config(config)
+    email_dest = EMAIL_DESTINATIONS.get(config.params['project'], [])
+
+    for job in jobs:
+        # Frankly, my dear, you're all over the place
+        shipping_phase = job.get('attributes', {}).get('shipping_phase') or \
+            job.get('shipping-phase')
+        shipping_product = job.get('attributes', {}).get('shipping_product') or \
+            job.get('shipping-product')
+        label = job.get('label') or '{}-{}'.format(config.kind, job['name'])
+
+        # We only modify release jobs, or nightly & release being run in the context of a release
+        if shipping_phase in RELEASE_NOTIFICATION_PHASES and \
+                config.params['target_tasks_method'].startswith(RELEASE_NOTIFICATION_PHASES):
+
+            format_kwargs = dict(
+                label=label,
+                shipping_product=shipping_product,
+                config=config.__dict__,
+                release_config=release_config,
+            )
+
+            # Add routes to trigger notifications via tc-notify
+            for dest in email_dest:
+                job.setdefault('routes', []).extend(
+                    [r.format(email_dest=dest) for r in DEFAULT_ROUTES]
+                )
+
+            # Customize the email subject to include release name and build number
+            job.setdefault('extra', {}).update(
+                {
+                   'notify': {
+                       'email': {
+                            'subject': SUBJECT_TEMPLATE.format(**format_kwargs)
+                        }
+                    }
+                }
+            )
+
+        yield job
--- a/taskcluster/taskgraph/util/scriptworker.py
+++ b/taskcluster/taskgraph/util/scriptworker.py
@@ -249,16 +249,21 @@ PUSH_APK_SCOPE_ALIAS_TO_PROJECT = [[
 PUSH_APK_SCOPES = {
     'central': 'googleplay:aurora',
     'beta': 'googleplay:beta',
     'release': 'googleplay:release',
     'default': 'googleplay:invalid',
 }
 
 
+""" The list of the release promotion phases which we send notifications for
+"""
+RELEASE_NOTIFICATION_PHASES = ('promote', 'push', 'ship')
+
+
 def add_scope_prefix(config, scope):
     """
     Prepends the scriptworker scope prefix from the :ref:`graph config
     <taskgraph-graph-config>`.
 
     Args:
         config (TransformConfig): The configuration for the kind being transformed.
         scope (string): The suffix of the scope