Bug 1340564: use an attribute to identify signed tasks; r=Callek
authorDustin J. Mitchell <dustin@mozilla.com>
Sun, 05 Feb 2017 14:08:10 -0500
changeset 358084 b1e27dba755b4ca2c26565f0b2849a3c3b1bd7fa
parent 358083 8a73de724f644192973e88b7685689b048023676
child 358085 44a0f9f0dff4d9d3d1d19bac326e7a9e6070216a
push id31812
push userryanvm@gmail.com
push dateFri, 12 May 2017 15:49:02 +0000
treeherdermozilla-central@1e2fe13035e1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersCallek
bugs1340564
milestone55.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 1340564: use an attribute to identify signed tasks; r=Callek This is a more robust approach than using substring matching on task labels. As an optimization, this simply avoids creating balrog tasks for unsigned beets using only-for-attributes, rather than omitting them in a transform. MozReview-Commit-ID: 8MNOxu0WgXo
taskcluster/ci/balrog/kind.yml
taskcluster/docs/attributes.rst
taskcluster/taskgraph/transforms/balrog.py
taskcluster/taskgraph/transforms/beetmover.py
taskcluster/taskgraph/transforms/beetmover_checksums.py
taskcluster/taskgraph/transforms/beetmover_repackage.py
taskcluster/taskgraph/transforms/signing.py
--- a/taskcluster/ci/balrog/kind.yml
+++ b/taskcluster/ci/balrog/kind.yml
@@ -10,8 +10,9 @@ transforms:
 
 kind-dependencies:
   - beetmover
   - beetmover-l10n
   - beetmover-repackage
 
 only-for-attributes:
   - nightly
+  - signed
--- a/taskcluster/docs/attributes.rst
+++ b/taskcluster/docs/attributes.rst
@@ -150,8 +150,12 @@ chunk_locales
 For the ``l10n`` and ``nightly-l10n`` kinds, this attribute contains an array of
 the individual locales this chunk is responsible for processing.
 
 locale
 ======
 For jobs that operate on only one locale, we set the attribute ``locale`` to the
 specific locale involved. Currently this is only in l10n versions of the
 ``beetmover`` and ``balrog`` kinds.
+
+signed
+======
+Signals that the output of this task contains signed artifacts.
--- a/taskcluster/taskgraph/transforms/balrog.py
+++ b/taskcluster/taskgraph/transforms/balrog.py
@@ -45,26 +45,16 @@ def validate(config, jobs):
     for job in jobs:
         label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
         yield validate_schema(
             balrog_description_schema, job,
             "In balrog ({!r} kind) task for {!r}:".format(config.kind, label))
 
 
 @transforms.add
-def skip_unsigned_beets(config, jobs):
-    for job in jobs:
-        if ('signing' not in job['dependent-task'].label and
-                'beetmover-repackage' not in job['dependent-task'].label):
-            # Skip making a balrog task for this
-            continue
-        yield job
-
-
-@transforms.add
 def make_task_description(config, jobs):
     for job in jobs:
         dep_job = job['dependent-task']
 
         treeherder = job.get('treeherder', {})
         treeherder.setdefault('symbol', 'tc-Up(N)')
         dep_th_platform = dep_job.task.get('extra', {}).get(
             'treeherder', {}).get('machine', {}).get('platform', '')
--- a/taskcluster/taskgraph/transforms/beetmover.py
+++ b/taskcluster/taskgraph/transforms/beetmover.py
@@ -217,16 +217,17 @@ def make_task_description(config, jobs):
         if len(dep_job.dependencies) > 1:
             raise NotImplementedError(
                 "Can't beetmove a signing task with multiple dependencies")
         signing_dependencies = dep_job.dependencies
         dependencies.update(signing_dependencies)
 
         attributes = {
             'nightly': dep_job.attributes.get('nightly', False),
+            'signed': dep_job.attributes.get('signed', False),
             'build_platform': dep_job.attributes.get('build_platform'),
             'build_type': dep_job.attributes.get('build_type'),
         }
         if job.get('locale'):
             attributes['locale'] = job['locale']
 
         bucket_scope = get_beetmover_bucket_scope(config)
         action_scope = get_beetmover_action_scope(config)
--- a/taskcluster/taskgraph/transforms/beetmover_checksums.py
+++ b/taskcluster/taskgraph/transforms/beetmover_checksums.py
@@ -60,16 +60,17 @@ def make_beetmover_checksums_description
         dependent_kind = str(dep_job.kind)
         dependencies = {dependent_kind: dep_job.label}
         for k, v in dep_job.dependencies.items():
             if k.startswith('beetmover'):
                 dependencies[k] = v
 
         attributes = {
             'nightly': dep_job.attributes.get('nightly', False),
+            'signed': dep_job.attributes.get('signed', False),
             'build_platform': dep_job.attributes.get('build_platform'),
             'build_type': dep_job.attributes.get('build_type'),
         }
         if dep_job.attributes.get('locale'):
             treeherder['symbol'] = 'tc-BMcs({})'.format(dep_job.attributes.get('locale'))
             attributes['locale'] = dep_job.attributes.get('locale')
 
         bucket_scope = get_beetmover_bucket_scope(config)
--- a/taskcluster/taskgraph/transforms/beetmover_repackage.py
+++ b/taskcluster/taskgraph/transforms/beetmover_repackage.py
@@ -142,16 +142,17 @@ def make_task_description(config, jobs):
         dependencies.update(repackage_dependencies)
         build_dependencies = {"build":
                               dep_job.dependencies["build-signing"].replace("signing-", "build-")
                               }
         dependencies.update(build_dependencies)
 
         attributes = {
             'nightly': dep_job.attributes.get('nightly', False),
+            'signed': dep_job.attributes.get('signed', False),
             'build_platform': dep_job.attributes.get('build_platform'),
             'build_type': dep_job.attributes.get('build_type'),
         }
         if job.get('locale'):
             attributes['locale'] = job['locale']
 
         bucket_scope = get_beetmover_bucket_scope(config)
         action_scope = get_beetmover_action_scope(config)
--- a/taskcluster/taskgraph/transforms/signing.py
+++ b/taskcluster/taskgraph/transforms/signing.py
@@ -96,16 +96,17 @@ def make_task_description(config, jobs):
         treeherder.setdefault('kind', 'build')
 
         label = job.get('label', "{}-signing".format(dep_job.label))
 
         attributes = {
             'nightly': dep_job.attributes.get('nightly', False),
             'build_platform': dep_job.attributes.get('build_platform'),
             'build_type': dep_job.attributes.get('build_type'),
+            'signed': True,
         }
         if dep_job.attributes.get('chunk_locales'):
             # Used for l10n attribute passthrough
             attributes['chunk_locales'] = dep_job.attributes.get('chunk_locales')
 
         # This code wasn't originally written with the possibility of using different
         # signing cert scopes for different platforms on the same branch. This isn't
         # ideal, but it's what we currently have to make this possible.