Bug 1465659 - Check perfherder options across all build kinds. r=dustin
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 31 May 2018 12:57:36 +0900
changeset 420811 5fc13d0a68ad0c5bc1c968c62ca8314812b7acc1
parent 420810 e2087bd3daee2269846444950e7d9fae40f80f3a
child 420812 dfb4c974e3b03eed033cc8beb77cd2cf19b52bd4
push id103894
push usercsabou@mozilla.com
push dateFri, 01 Jun 2018 09:46:36 +0000
treeherdermozilla-inbound@e99ff79303ea [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdustin
bugs1465659
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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