Bug 1465659 - Check perfherder options across all build kinds. r?dustin draft
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 31 May 2018 12:57:36 +0900
changeset 801962 e6e6fc6d754dbf8f156dd114751e4d1ede91dba2
parent 801961 5b2994262dd88ce465b2d4258528dbcdae8e78d6
child 801963 3c00e5750c348181d6be1acdfddad92ffe838ecb
push id111792
push userbmo:mh+mozilla@glandium.org
push dateThu, 31 May 2018 04:48:26 +0000
reviewersdustin
bugs1465659
milestone62.0a1
Bug 1465659 - Check perfherder options across all build kinds. r?dustin
taskcluster/taskgraph/transforms/build_lints.py
--- a/taskcluster/taskgraph/transforms/build_lints.py
+++ b/taskcluster/taskgraph/transforms/build_lints.py
@@ -7,31 +7,32 @@ kind.
 """
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 from taskgraph.transforms.base import TransformSequence
 
 transforms = TransformSequence()
 
+SEEN_CONFIGS = {}
+
 
 @transforms.add
 def check_mozharness_perfherder_options(config, jobs):
     """Verify that multiple jobs don't use the same perfherder bucket.
 
     Build jobs record perfherder metrics by default. Perfherder metrics go
     to a bucket derived by the platform by default. The name can further be
     customized by the presence of "extra options" either defined in
     mozharness sub-configs or in an environment variable.
 
     This linter tries to verify that no 2 jobs will send Perfherder metrics
     to the same bucket by looking for jobs not defining extra options when
     their platform or mozharness config are otherwise similar.
     """
-    seen_configs = {}
 
     for job in jobs:
         if job['run']['using'] != 'mozharness':
             yield job
             continue
 
         worker = job.get('worker', {})
 
@@ -42,17 +43,18 @@ def check_mozharness_perfherder_options(
 
         # This isn't strictly necessary. But the Perfherder code looking at the
         # values we care about is only active on builds. So it doesn't make
         # sense to run this linter elsewhere.
         assert primary_config.startswith('builds/')
 
         key = (platform, primary_config, nightly, options)
 
-        if key in seen_configs:
-            raise Exception('Non-unique Perfherder data collection for jobs '
-                            '%s and %s: set PERFHERDER_EXTRA_OPTIONS in worker '
-                            'environment variables or use different mozconfigs'
-                            % (job['name'], seen_configs[key]))
+        if key in SEEN_CONFIGS:
+            raise Exception(
+                'Non-unique Perfherder data collection for jobs %s-%s and %s: '
+                'set PERFHERDER_EXTRA_OPTIONS in worker environment variables '
+                'or use different mozconfigs'
+                % (config.kind, job['name'], SEEN_CONFIGS[key]))
 
-        seen_configs[key] = job['name']
+        SEEN_CONFIGS[key] = '{}-{}'.format(config.kind, job['name'])
 
         yield job