Bug 1445672 - Do not rely on release-type to define alias name r=aki draft
authorJohan Lorenzo <jlorenzo@mozilla.com>
Wed, 14 Mar 2018 19:11:16 +0100
changeset 767491 0df8cba7937144e6c5168ce4df753629ce288ce5
parent 767347 80b4777a6421d8df4bb27ac23fb607c318a3006c
push id102623
push userbmo:jlorenzo@mozilla.com
push dateWed, 14 Mar 2018 18:50:54 +0000
reviewersaki
bugs1445672
milestone61.0a1
Bug 1445672 - Do not rely on release-type to define alias name r=aki MozReview-Commit-ID: ErWI9JhUqG7 G: changed taskcluster/taskgraph/transforms/bouncer_aliases.py
taskcluster/ci/release-bouncer-aliases/kind.yml
taskcluster/taskgraph/transforms/bouncer_aliases.py
--- a/taskcluster/ci/release-bouncer-aliases/kind.yml
+++ b/taskcluster/ci/release-bouncer-aliases/kind.yml
@@ -33,18 +33,55 @@ job-defaults:
          default:
             - project:releng:bouncer:action:aliases
             - project:releng:bouncer:server:staging
    run-on-projects: []
    shipping-phase: ship
 
 jobs:
    devedition:
-      bouncer-products: ['installer', 'installer-ssl', 'stub-installer']
+      bouncer-products-per-alias:
+         firefox-devedition-latest-ssl: installer-ssl
+         firefox-devedition-latest: installer
+         firefox-devedition-stub: stub-installer
       shipping-product: devedition
 
    fennec:
-      bouncer-products: ['apk']
+      bouncer-products-per-alias:
+         by-project:
+            mozilla-beta:
+               fennec-beta-latest: apk
+            mozilla-release:
+               fennec-latest: apk
+            birch:
+               fennec-latest: apk
+            maple:
+               fennec-beta-latest: apk
+            default: {}
       shipping-product: fennec
 
    firefox:
-      bouncer-products: ['installer', 'installer-ssl', 'stub-installer']
+      bouncer-products-per-alias:
+         by-project:
+            mozilla-beta:
+               firefox-beta-latest-ssl: installer-ssl
+               firefox-beta-latest: installer
+               firefox-beta-stub: stub-installer
+            mozilla-release:
+               firefox-latest-ssl: installer-ssl
+               firefox-latest: installer
+               firefox-stub: stub-installer
+            mozilla-esr60:
+               firefox-esr-latest-ssl: installer-ssl
+               firefox-latest-ssl: installer
+            birch:
+               firefox-latest-ssl: installer-ssl
+               firefox-latest: installer
+               firefox-stub: stub-installer
+            jamun:
+               firefox-esr-latest-ssl: installer-ssl
+               firefox-latest-ssl: installer
+            maple:
+               firefox-beta-latest-ssl: installer-ssl
+               firefox-beta-latest: installer
+               firefox-beta-stub: stub-installer
+            default: {}
       shipping-product: firefox
--- a/taskcluster/taskgraph/transforms/bouncer_aliases.py
+++ b/taskcluster/taskgraph/transforms/bouncer_aliases.py
@@ -23,20 +23,24 @@ transforms = TransformSequence()
 def make_task_worker(config, jobs):
     for job in jobs:
         resolve_keyed_by(
             job, 'worker-type', item_name=job['name'], project=config.params['project']
         )
         resolve_keyed_by(
             job, 'scopes', item_name=job['name'], project=config.params['project']
         )
+        resolve_keyed_by(
+            job, 'bouncer-products-per-alias',
+            item_name=job['name'], project=config.params['project']
+        )
 
         job['worker']['entries'] = craft_bouncer_entries(config, job)
 
-        del job['bouncer-products']
+        del job['bouncer-products-per-alias']
 
         if job['worker']['entries']:
             yield job
         else:
             logger.warn('No bouncer entries defined in bouncer submission task for "{}". \
 Job deleted.'.format(job['name']))
 
 
@@ -44,53 +48,16 @@ def craft_bouncer_entries(config, job):
     release_config = get_release_config(config)
 
     product = job['shipping-product']
     release_type = config.params['release_type']
     # The release_type is defined but may point to None.
     if not release_type:
         release_type = ''
     current_version = release_config['version']
-    bouncer_products = job['bouncer-products']
+    bouncer_products_per_alias = job['bouncer-products-per-alias']
 
     return {
-        craft_bouncer_alias(product, bouncer_product, release_type): craft_bouncer_product_name(
+        bouncer_alias: craft_bouncer_product_name(
             product, bouncer_product, current_version,
         )
-        for bouncer_product in bouncer_products
+        for bouncer_alias, bouncer_product in bouncer_products_per_alias.items()
     }
-
-
-def craft_bouncer_alias(product, bouncer_product, release_type):
-    return '{product}{channel}{postfix}'.format(
-        product=_craft_product(product),
-        channel=_craft_channel_string_of_alias(product, release_type),
-        postfix=_craft_alias_postfix(bouncer_product)
-    )
-
-
-def _craft_product(product):
-    # XXX devedition is provided in the channel function
-    return 'firefox' if product == 'devedition' else product
-
-
-def _craft_channel_string_of_alias(product, release_type):
-    if product == 'devedition':
-        return '-devedition'
-    elif release_type == 'beta':
-        return '-beta'
-    elif 'esr' in release_type:
-        return '-esr'
-
-    return ''
-
-
-def _craft_alias_postfix(bouncer_product):
-    if 'stub' in bouncer_product:
-        postfix = '-stub'
-    elif 'installer' in bouncer_product or bouncer_product == 'apk':
-        postfix = '-latest'
-        if 'ssl' in bouncer_product:
-            postfix = '{}-ssl'.format(postfix)
-    else:
-        raise Exception('Unknown bouncer product "{}"'.format(bouncer_product))
-
-    return postfix