bug 1431799 - add RC secondary tasks. r=bhearsum draft
authorAki Sasaki <asasaki@mozilla.com>
Mon, 29 Jan 2018 16:19:52 -0800
changeset 750904 58a1297f50f182209290a1a968ece11eb8216e13
parent 750903 40431217fafb6796dbd65c7dfeab0e891ac1bbd4
child 750905 59d41887d856481ab85bb8d2221dfcebca4430b0
push id97782
push userasasaki@mozilla.com
push dateSat, 03 Feb 2018 04:21:39 +0000
reviewersbhearsum
bugs1431799
milestone60.0a1
bug 1431799 - add RC secondary tasks. r=bhearsum MozReview-Commit-ID: 2hq4K5QVbWy
taskcluster/ci/release-secondary-balrog-publishing/kind.yml
taskcluster/ci/release-secondary-notify-ship/kind.yml
taskcluster/docs/kinds.rst
taskcluster/taskgraph/target_tasks.py
copy from taskcluster/ci/release-balrog-publishing/kind.yml
copy to taskcluster/ci/release-secondary-balrog-publishing/kind.yml
--- a/taskcluster/ci/release-balrog-publishing/kind.yml
+++ b/taskcluster/ci/release-secondary-balrog-publishing/kind.yml
@@ -6,17 +6,19 @@ loader: taskgraph.loader.transform:loade
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.release_balrog_publishing:transforms
    - taskgraph.transforms.job:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
-   - release-uptake-monitoring
+   - post-balrog-dummy
+   - post-beetmover-dummy
+   - release-updates-builder
 
 job-defaults:
    description: Schedule publishing in balrog
    worker-type: buildbot-bridge/buildbot-bridge
    run-on-projects: []
    shipping-phase: ship
    run:
       using: buildbot
@@ -64,34 +66,21 @@ job-defaults:
                try: ["{task_def[metadata][owner]}"]
                maple: ["release+tcstaging@mozilla.com"]
                default: []
    routes:
       - index.releases.v1.{branch}.latest.{product}.latest.schedule_publishing_in_balrog
       - index.releases.v1.{branch}.{revision}.{product}.{underscore_version}.build{build_number}.schedule_publishing_in_balrog
 
 jobs:
-   firefox:
+   firefox-secondary-rc:
       name: release-firefox_schedule_publishing_in_balrog
       shipping-product: firefox
       run:
          product: firefox
          buildername: release-{branch}-firefox_schedule_publishing_in_balrog
          channels:
             by-project:
-               birch: release
-               maple: beta
-               mozilla-beta: beta
-               mozilla-release: release
-               mozilla-esr52: esr
-               mozilla-esr59: esr
+               birch: beta
+               mozilla-release: beta
                default: unknown
       index:
          product: firefox
-   devedition:
-      name: release-devedition_schedule_publishing_in_balrog
-      shipping-product: devedition
-      run:
-         product: devedition
-         buildername: release-{branch}-devedition_schedule_publishing_in_balrog
-         channels: aurora
-      index:
-         product: devedition
copy from taskcluster/ci/release-notify-ship/kind.yml
copy to taskcluster/ci/release-secondary-notify-ship/kind.yml
--- a/taskcluster/ci/release-notify-ship/kind.yml
+++ b/taskcluster/ci/release-secondary-notify-ship/kind.yml
@@ -4,21 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 transforms:
    - taskgraph.transforms.release_deps:transforms
    - taskgraph.transforms.task:transforms
 
 kind-dependencies:
-   - push-apk
-   - release-balrog-publishing
-   - release-bouncer-aliases
-   - release-version-bump
-   - release-mark-as-shipped
+   - release-secondary-balrog-publishing
 
 job-defaults:
    name: notify-release-drivers-ship
    description: Sends email to release-drivers telling release was shipped.
    run-on-projects: []
    shipping-phase: ship
    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
    worker:
@@ -38,32 +34,23 @@ job-defaults:
          emails:
             by-project:
                mozilla-beta: ["release-signoff@mozilla.org"]
                mozilla-release: ["release-signoff@mozilla.org"]
                try: ["{task_def[metadata][owner]}"]
                maple: ["release+tcstaging@mozilla.com"]
                default: []
    routes:
-      - index.releases.v1.{branch}.{revision}.{product}.{underscore_version}.build{build_number}.email-{channel}
-      - index.releases.v1.{branch}.latest.{product}.latest.email-{channel}
+      - index.releases.v1.{branch}.{revision}.{product}-rc.{underscore_version}.build{build_number}.email-{channel}
+      - index.releases.v1.{branch}.latest.{product}-rc.latest.email-{channel}
    index:
       type: release
       channel:
          by-project:
-            mozilla-beta: beta
-            mozilla-release: release
-            maple: maple
+            mozilla-release: beta
+            birch: birch
             default: unknown
 
 jobs:
-   fennec:
-      shipping-product: fennec
-      index:
-         product: fennec
-   firefox:
+   firefox-rc:
       shipping-product: firefox
       index:
          product: firefox
-   devedition:
-      shipping-product: devedition
-      index:
-         product: devedition
--- a/taskcluster/docs/kinds.rst
+++ b/taskcluster/docs/kinds.rst
@@ -250,16 +250,20 @@ Generate an installer using Ubuntu's Sna
 release-notify-push
 ----------------------
 Notify when a release has been pushed to CDNs.
 
 release-notify-ship
 ----------------------
 Notify when a release has been shipped.
 
+release-secondary-notify-ship
+----------------------
+Notify when an RC release has been shipped to the beta channel.
+
 release-notify-promote
 ----------------------
 Notify when a release has been promoted.
 
 release-bouncer-sub
 -------------------
 Submits bouncer updates for releases.
 
@@ -276,17 +280,21 @@ release-generate-checksums
 Generate the per-release checksums along with the summaries and upload it to S3.
 
 release-final-verify
 ---------------------
 Verifies the contents and package of release update MARs.
 
 release-secondary-final-verify
 ---------------------
-Verifies the contents and package of release update MARs.
+Verifies the contents and package of release update MARs for RC releases.
+
+release-secondary-balrog-publishing
+---------------------
+Schedule an RC release to go live in Balrog. Usually this will happen on the beta channel, to a smaller audience, before the RC goes live on the release channel.
 
 release-update-verify
 ---------------------
 Verifies the contents and package of release update MARs.
 
 release-updates-builder
 -----------------------
 Top level Balrog blob submission & patcher/update verify config updates.
--- a/taskcluster/taskgraph/target_tasks.py
+++ b/taskcluster/taskgraph/target_tasks.py
@@ -364,27 +364,44 @@ def target_tasks_push_firefox(full_task_
 
     return [l for l, t in full_task_graph.tasks.iteritems() if filter(t)]
 
 
 @_target_task('ship_firefox')
 def target_tasks_ship_firefox(full_task_graph, parameters, graph_config):
     """Select the set of tasks required to ship firefox.
     Previous build deps will be optimized out via action task."""
-    filtered_for_candidates = target_tasks_push_firefox(
-        full_task_graph, parameters, graph_config,
-    )
+    is_rc = (parameters.get('desktop_release_type') == 'rc')
+    if is_rc:
+        # ship_firefox_rc runs after `promote` rather than `push`; include
+        # all promote tasks.
+        filtered_for_candidates = target_tasks_promote_firefox(
+            full_task_graph, parameters, graph_config,
+        )
+    else:
+        # ship_firefox runs after `push`; include all push tasks.
+        filtered_for_candidates = target_tasks_push_firefox(
+            full_task_graph, parameters, graph_config,
+        )
 
     def filter(task):
         # Include promotion tasks; these will be optimized out
         if task.label in filtered_for_candidates:
             return True
-        if task.attributes.get('shipping_product') == 'firefox' and \
-                task.attributes.get('shipping_phase') == 'ship':
-            return True
+        if task.attributes.get('shipping_product') != 'firefox' or \
+                task.attributes.get('shipping_phase') != 'ship':
+            return False
+
+        if task.kind in (
+            'release-secondary-balrog-publishing',
+            'release-secondary-notify-ship',
+        ):
+                return is_rc
+        else:
+                return not is_rc
 
     return [l for l, t in full_task_graph.tasks.iteritems() if filter(t)]
 
 
 @_target_task('promote_devedition')
 def target_tasks_promote_devedition(full_task_graph, parameters, graph_config):
     """Select the superset of tasks required to promote a beta or release build
     of devedition. This should include all non-android mozilla_{beta,release}