Bug 1497575: [staging-release] Set update channel by release type. r=aki, a=release
authorTom Prince <mozilla@hocat.ca>
Tue, 23 Oct 2018 19:11:31 +0000
changeset 500807 c7d638d18847747e9dd767852ca0bc61024f2ee5
parent 500806 67eae480ee468a4105363b84f82f30e1ec8e000e
child 500808 3c3beb416a0e5e6530f6551a0b2ad3c48394c218
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersaki, release
bugs1497575
milestone64.0
Bug 1497575: [staging-release] Set update channel by release type. r=aki, a=release Differential Revision: https://phabricator.services.mozilla.com/D8449
taskcluster/ci/build/kind.yml
taskcluster/ci/release-update-verify-config/kind.yml
taskcluster/ci/release-update-verify/kind.yml
taskcluster/taskgraph/decision.py
taskcluster/taskgraph/transforms/build.py
testing/mozharness/configs/builds/branch_specifics.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
--- a/taskcluster/ci/build/kind.yml
+++ b/taskcluster/ci/build/kind.yml
@@ -17,8 +17,22 @@ transforms:
     - taskgraph.transforms.task:transforms
 
 jobs-from:
     - android.yml
     - android-stuff.yml
     - linux.yml
     - macosx.yml
     - windows.yml
+
+job-defaults:
+    run:
+        # Note: These settings are only honored by nightly (i.e. shipping) builds
+        update-channel:
+            by-release-type:
+                nightly: nightly
+                beta:
+                    by-shipping-product:
+                        devedition: aurora
+                        default: beta
+                release.*: release
+                esr.*: esr
+                default: null
--- a/taskcluster/ci/release-update-verify-config/kind.yml
+++ b/taskcluster/ci/release-update-verify-config/kind.yml
@@ -49,30 +49,30 @@ job-defaults:
       # https://bugzilla.mozilla.org/show_bug.cgi?id=1419189
       # The devedition override can be removed after 58.0b1
       # is behind a watershed
       include-version:
          by-release-type:
             beta: beta
             release(-rc)?: nonbeta
             esr60: esr
-            nightly: beta
+            default: beta
       last-watershed:
          by-release-type:
             beta: "56.0b3"
             release(-rc)?:
                by-platform:
                   linux-.*: "57.0"
                   linux64-.*: "57.0"
                   macosx64-.*: "57.0"
                   win32-.*: "56.0"
                   win64-.*: "56.0"
                   default: null
             esr60: "52.0esr"
-            nightly: "default"
+            default: "default"
 
 jobs:
    firefox-linux:
       shipping-product: firefox
       treeherder:
          symbol: UVC
          platform: linux32/opt
          kind: test
@@ -83,17 +83,17 @@ jobs:
          product: firefox
          platform: linux-i686
          updater-platform: linux-x86_64
          channel:
             by-release-type:
                beta: "beta-localtest"
                release(-rc)?: "release-localtest"
                esr60: "esr-localtest"
-               nightly: "default"
+               default: "default"
          mar-channel-id-override:
             by-release-type:
                beta: beta
                default: null
 
    firefox-linux64:
       shipping-product: firefox
       treeherder:
@@ -107,17 +107,17 @@ jobs:
          product: firefox
          platform: linux-x86_64
          updater-platform: linux-x86_64
          channel:
             by-release-type:
                beta: "beta-localtest"
                release(-rc)?: "release-localtest"
                esr60: "esr-localtest"
-               nightly: "default"
+               default: "default"
          mar-channel-id-override:
             by-release-type:
                beta: beta
                default: null
 
    firefox-macosx64:
       shipping-product: firefox
       treeherder:
@@ -131,17 +131,17 @@ jobs:
          product: firefox
          platform: mac
          updater-platform: linux-x86_64
          channel:
             by-release-type:
                beta: "beta-localtest"
                release(-rc)?: "release-localtest"
                esr60: "esr-localtest"
-               nightly: "default"
+               default: "default"
          mar-channel-id-override:
             by-release-type:
                beta: beta
                default: null
 
    firefox-win32:
       shipping-product: firefox
       treeherder:
@@ -155,17 +155,17 @@ jobs:
          product: firefox
          platform: win32
          updater-platform: linux-x86_64
          channel:
             by-release-type:
                beta: "beta-localtest"
                release(-rc)?: "release-localtest"
                esr60: "esr-localtest"
-               nightly: "default"
+               default: "default"
          mar-channel-id-override:
             by-release-type:
                beta: beta
                default: null
 
    firefox-win64:
       shipping-product: firefox
       treeherder:
@@ -179,17 +179,17 @@ jobs:
          product: firefox
          platform: win64
          updater-platform: linux-x86_64
          channel:
             by-release-type:
                beta: "beta-localtest"
                release(-rc)?: "release-localtest"
                esr60: "esr-localtest"
-               nightly: "default"
+               default: "default"
          mar-channel-id-override:
             by-release-type:
                beta: beta
                default: null
 
    devedition-linux:
       shipping-product: devedition
       treeherder:
--- a/taskcluster/ci/release-update-verify/kind.yml
+++ b/taskcluster/ci/release-update-verify/kind.yml
@@ -45,16 +45,17 @@ jobs:
       worker:
          env:
             CHANNEL:
                by-release-type:
                   beta: "beta-localtest"
                   release(-rc)?: "release-localtest"
                   esr60: "esr-localtest"
                   nightly: "nightly"
+                  default: "default"
       treeherder:
          symbol: UV(UV)
          platform: linux64/opt
          kind: test
          tier: 1
       attributes:
          build_platform: linux64-nightly
 
@@ -64,16 +65,17 @@ jobs:
       worker:
          env:
             CHANNEL:
                by-release-type:
                   beta: "beta-localtest"
                   release(-rc)?: "release-localtest"
                   esr60: "esr-localtest"
                   nightly: "nightly"
+                  default: "default"
       treeherder:
          symbol: UV(UV)
          platform: linux32/opt
          kind: test
          tier: 1
       attributes:
          build_platform: linux-nightly
 
@@ -83,16 +85,17 @@ jobs:
       worker:
          env:
             CHANNEL:
                by-release-type:
                   beta: "beta-localtest"
                   release(-rc)?: "release-localtest"
                   esr60: "esr-localtest"
                   nightly: "nightly"
+                  default: "default"
       treeherder:
          symbol: UV(UV)
          platform: windows2012-64/opt
          kind: test
          tier: 1
       attributes:
          build_platform: win64-nightly
 
@@ -102,16 +105,17 @@ jobs:
       worker:
          env:
             CHANNEL:
                by-release-type:
                   beta: "beta-localtest"
                   release(-rc)?: "release-localtest"
                   esr60: "esr-localtest"
                   nightly: "nightly"
+                  default: "default"
       treeherder:
          symbol: UV(UV)
          platform: windows2012-32/opt
          kind: test
          tier: 1
       attributes:
          build_platform: win32-nightly
 
@@ -121,16 +125,17 @@ jobs:
       worker:
          env:
             CHANNEL:
                by-release-type:
                   beta: "beta-localtest"
                   release(-rc)?: "release-localtest"
                   esr60: "esr-localtest"
                   nightly: "nightly"
+                  default: "default"
       treeherder:
          symbol: UV(UV)
          platform: osx-cross/opt
          kind: test
          tier: 1
       attributes:
          build_platform: macosx64-nightly
 
--- a/taskcluster/taskgraph/decision.py
+++ b/taskcluster/taskgraph/decision.py
@@ -59,16 +59,23 @@ PER_PROJECT_PARAMETERS = {
     },
 
     'graphics': {
         'target_tasks_method': 'graphics_tasks',
         'optimize_target_tasks': True,
         'include_nightly': False,
     },
 
+    'mozilla-central': {
+        'target_tasks_method': 'default',
+        'optimize_target_tasks': True,
+        'include_nightly': False,
+        'release_type': 'nightly',
+    },
+
     'mozilla-beta': {
         'target_tasks_method': 'mozilla_beta_tasks',
         'optimize_target_tasks': True,
         'include_nightly': True,
         'release_type': 'beta',
     },
 
     'mozilla-release': {
@@ -218,17 +225,17 @@ def get_decision_parameters(config, opti
         'target_tasks_method',
     ]
     parameters['existing_tasks'] = {}
     parameters['do_not_optimize'] = []
     parameters['build_number'] = 1
     parameters['version'] = get_version(product_dir)
     parameters['app_version'] = get_app_version(product_dir)
     parameters['next_version'] = None
-    parameters['release_type'] = 'nightly'
+    parameters['release_type'] = ''
     parameters['release_eta'] = ''
     parameters['release_enable_partners'] = False
     parameters['release_partners'] = []
     parameters['release_partner_config'] = {}
     parameters['release_partner_build_number'] = 1
     parameters['release_enable_emefree'] = False
     parameters['release_product'] = None
     parameters['try_mode'] = None
--- a/taskcluster/taskgraph/transforms/build.py
+++ b/taskcluster/taskgraph/transforms/build.py
@@ -48,16 +48,31 @@ def stub_installer(config, jobs):
             job['attributes']['stub-installer'] = job['stub-installer']
             job['worker']['env'].update({"USE_STUB_INSTALLER": "1"})
         if 'stub-installer' in job:
             del job['stub-installer']
         yield job
 
 
 @transforms.add
+def update_channel(config, jobs):
+    for job in jobs:
+        resolve_keyed_by(
+            job, 'run.update-channel', item_name=job['name'],
+            **{
+                'release-type': config.params['release_type'],
+            }
+        )
+        update_channel = job['run'].pop('update-channel', None)
+        if update_channel:
+            job['run'].setdefault('extra-config', {})['update_channel'] = update_channel
+        yield job
+
+
+@transforms.add
 def set_env(config, jobs):
     """Set extra environment variables from try command line."""
     env = []
     if config.params['try_mode'] == 'try_option_syntax':
         env = config.params['try_options']['env'] or []
     for job in jobs:
         if env:
             job['worker']['env'].update(dict(x.split('=') for x in env))
--- a/testing/mozharness/configs/builds/branch_specifics.py
+++ b/testing/mozharness/configs/builds/branch_specifics.py
@@ -26,22 +26,20 @@
 #         }
 #     },
 # }
 
 config = {
     ### release branches
     "mozilla-central": {
         "repo_path": 'mozilla-central',
-        "update_channel": "nightly",
     },
     'mozilla-release': {
         'enable_release_promotion': True,
         'repo_path': 'releases/mozilla-release',
-        'update_channel': 'release',
         'branch_uses_per_checkin_strategy': True,
         'platform_overrides': {
             'linux': {
                 'mozconfig_variant': 'release',
             },
             'linux64': {
                 'mozconfig_variant': 'release',
             },
@@ -54,17 +52,16 @@ config = {
             'win64': {
                 'mozconfig_variant': 'release',
             },
         },
     },
     'mozilla-esr60': {
         'enable_release_promotion': True,
         'repo_path': 'releases/mozilla-esr60',
-        'update_channel': 'esr',
         'branch_uses_per_checkin_strategy': True,
         'platform_overrides': {
             'linux': {
                 # We keep using the release configs as the beta and release configs are
                 # identical except for
                 # https://searchfox.org/mozilla-central/rev/ce9ff94ffed34dc17ec0bfa406156d489eaa8ee1/browser/config/mozconfigs/linux32/release#1    # noqa
                 'mozconfig_variant': 'release',
             },
@@ -80,17 +77,16 @@ config = {
             'win64': {
                 'mozconfig_variant': 'release',
             },
         },
     },
     'mozilla-beta': {
         'enable_release_promotion': 1,
         'repo_path': 'releases/mozilla-beta',
-        'update_channel': 'beta',
         'branch_uses_per_checkin_strategy': True,
         'platform_overrides': {
             'linux': {
                 'mozconfig_variant': 'beta',
             },
             'linux64': {
                 'mozconfig_variant': 'beta',
             },
@@ -98,38 +94,18 @@ config = {
                 'mozconfig_variant': 'beta',
             },
             'win32': {
                 'mozconfig_variant': 'beta',
             },
             'win64': {
                 'mozconfig_variant': 'beta',
             },
-            'linux-devedition': {
-                "update_channel": "aurora",
-            },
-            'linux64-devedition': {
-                "update_channel": "aurora",
-            },
-            'macosx64-devedition': {
-                "update_channel": "aurora",
-            },
-            'win32-devedition': {
-                "update_channel": "aurora",
-            },
-            'win64-devedition': {
-                "update_channel": "aurora",
-            },
         },
     },
-    'mozilla-aurora': {
-        'repo_path': 'releases/mozilla-aurora',
-        'update_channel': 'aurora',
-        'branch_uses_per_checkin_strategy': True,
-    },
     'try': {
         'repo_path': 'try',
         'branch_supports_uploadsymbols': False,
     },
 
     ### project branches
     #'fx-team': {},   #Bug 1296396
     'gum': {
@@ -153,17 +129,16 @@ config = {
     'birch': {},
     # 'build-system': {}
     'cedar': {},
     'elm': {},
     'fig': {},
     'graphics': {},
     # 'holly': {},
     'jamun': {
-        'update_channel': 'beta',
         'enable_release_promotion': 1,
         'platform_overrides': {
             'linux': {
                 'mozconfig_variant': 'release',
             },
             'linux64': {
                 'mozconfig_variant': 'release',
             },
@@ -171,30 +146,15 @@ config = {
                 'mozconfig_variant': 'release',
             },
             'win32': {
                 'mozconfig_variant': 'release',
             },
             'win64': {
                 'mozconfig_variant': 'release',
             },
-            'linux-devedition': {
-                "update_channel": "aurora",
-            },
-            'linux64-devedition': {
-                "update_channel": "aurora",
-            },
-            'macosx64-devedition': {
-                "update_channel": "aurora",
-            },
-            'win32-devedition': {
-                "update_channel": "aurora",
-            },
-            'win64-devedition': {
-                "update_channel": "aurora",
-            },
         },
     },
     'larch': {},
     # 'maple': {},
     'oak': {},
     'pine': {},
 }
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -839,17 +839,20 @@ or run without that action (ie: --no-{ac
         # storage
         repo_path = self._query_repo()
         assert repo_path
         env['MOZ_SOURCE_REPO'] = repo_path
 
         if self.query_is_nightly() or self.query_is_nightly_promotion():
             # in branch_specifics.py we might set update_channel explicitly
             if c.get('update_channel'):
-                env["MOZ_UPDATE_CHANNEL"] = c['update_channel']
+                update_channel = c['update_channel']
+                if isinstance(update_channel, unicode):
+                    update_channel = update_channel.encode("utf-8")
+                env["MOZ_UPDATE_CHANNEL"] = update_channel
             elif c.get('enable_release_promotion'):
                 env["MOZ_UPDATE_CHANNEL"] = self.branch
             else:  # let's just give the generic channel based on branch
                 env["MOZ_UPDATE_CHANNEL"] = "nightly-%s" % (self.branch,)
             self.info("Update channel set to: {}".format(env["MOZ_UPDATE_CHANNEL"]))
 
         if self.config.get('pgo_build') or self._compile_against_pgo():
             env['MOZ_PGO'] = '1'