Backed out 2 changesets (bug 1560134) for failures at taskcluster/taskgraph/test/test_transforms_job.py on a CLOSED TREE
authorCoroiu Cristina <ccoroiu@mozilla.com>
Tue, 02 Jul 2019 19:55:52 +0300
changeset 543808 da33e6261a816c477c919b30a67042c886eb56b3
parent 543807 be87db5f1b62eaadff0597d78d930f25a3034a0c
child 543809 225a88b052744c8c6551312b91cc7b22721dbd8c
child 543865 fd2778a2ce8ba1284cba867f4358f9fcaf795568
push id2131
push userffxbld-merge
push dateMon, 26 Aug 2019 18:30:20 +0000
treeherdermozilla-release@b19ffb3ca153 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1560134
milestone69.0a1
backs outa14daf0a53cf85cee27285acf396aca6fb03bb99
35f409d120b18c55e334c7205372a47b4eef8342
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
Backed out 2 changesets (bug 1560134) for failures at taskcluster/taskgraph/test/test_transforms_job.py on a CLOSED TREE Backed out changeset a14daf0a53cf (bug 1560134) Backed out changeset 35f409d120b1 (bug 1560134)
taskcluster/ci/config.yml
taskcluster/ci/post-balrog-dummy/kind.yml
taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
taskcluster/ci/post-beetmover-dummy/kind.yml
taskcluster/ci/post-langpack-dummy/kind.yml
taskcluster/ci/release-notify-promote/kind.yml
taskcluster/ci/release-notify-push/kind.yml
taskcluster/ci/release-notify-ship/kind.yml
taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml
taskcluster/ci/release-secondary-notify-ship/kind.yml
taskcluster/taskgraph/transforms/task.py
--- a/taskcluster/ci/config.yml
+++ b/taskcluster/ci/config.yml
@@ -380,21 +380,16 @@ workers:
             implementation: generic-worker
             os: windows
             worker-type: 'gecko-{alias}'
         t-win10-64(-hw|-ref-hw|-ux):
             provisioner: releng-hardware
             implementation: generic-worker
             os: windows
             worker-type: 'gecko-{alias}'
-        succeed:
-            provisioner: built-in
-            implementation: succeed
-            os: none
-            worker-type: succeed
         t-win7-32(|-gpu):
             provisioner: aws-provisioner-v1
             implementation: generic-worker
             os: windows
             worker-type: 'gecko-{alias}'
         t-win64-aarch64-laptop:
             provisioner: bitbar
             implementation: generic-worker
--- a/taskcluster/ci/post-balrog-dummy/kind.yml
+++ b/taskcluster/ci/post-balrog-dummy/kind.yml
@@ -11,11 +11,18 @@ transforms:
 
 kind-dependencies:
     - balrog
 
 job-template:
     description: Dummy task to deal with max_dependencies
     run-on-projects: []
     shipping-phase: promote
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
--- a/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
+++ b/taskcluster/ci/post-beetmover-checksums-dummy/kind.yml
@@ -16,29 +16,50 @@ kind-dependencies:
 
 jobs:
     firefox-promote:
         name: post-beetmover-checksums-dummy
         description: Dummy task to deal with max_dependencies
         run-on-projects: []
         shipping-phase: promote
         shipping-product: firefox
-        worker-type: succeed
+        worker-type: b-linux
         worker:
-            implementation: succeed
+            implementation: docker-worker
+            os: linux
+            docker-image: "ubuntu:16.10"
+            max-run-time: 600
+            command:
+                - /bin/bash
+                - -c
+                - echo "Dummy task"
     devedition-promote:
         name: post-beetmover-checksums-dummy
         description: Dummy task to deal with max_dependencies
         run-on-projects: []
         shipping-phase: promote
         shipping-product: devedition
-        worker-type: succeed
+        worker-type: b-linux
         worker:
-            implementation: succeed
+            implementation: docker-worker
+            os: linux
+            docker-image: "ubuntu:16.10"
+            max-run-time: 600
+            command:
+                - /bin/bash
+                - -c
+                - echo "Dummy task"
     fennec-promote:
         name: post-beetmover-checksums-dummy
         description: Dummy task to deal with max_dependencies
         run-on-projects: []
         shipping-phase: promote
         shipping-product: fennec
-        worker-type: succeed
+        worker-type: b-linux
         worker:
-            implementation: succeed
+            implementation: docker-worker
+            os: linux
+            docker-image: "ubuntu:16.10"
+            max-run-time: 600
+            command:
+                - /bin/bash
+                - -c
+                - echo "Dummy task"
--- a/taskcluster/ci/post-beetmover-dummy/kind.yml
+++ b/taskcluster/ci/post-beetmover-dummy/kind.yml
@@ -15,11 +15,18 @@ kind-dependencies:
     # Fennec doesn't have beetmover-{checksums,repackage}, so
     # also depend on vanilla beetmover.
     - beetmover
 
 job-template:
     description: Dummy task to deal with max_dependencies
     run-on-projects: []
     shipping-phase: promote
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
--- a/taskcluster/ci/post-langpack-dummy/kind.yml
+++ b/taskcluster/ci/post-langpack-dummy/kind.yml
@@ -13,21 +13,35 @@ kind-dependencies:
 
 jobs:
     firefox-promote:
         name: post-langpack-dummy
         description: Dummy task to deal with max_dependencies
         run-on-projects: []
         shipping-phase: promote
         shipping-product: firefox
-        worker-type: succeed
+        worker-type: b-linux
         worker:
-            implementation: succeed
+            implementation: docker-worker
+            os: linux
+            docker-image: "ubuntu:16.10"
+            max-run-time: 600
+            command:
+                - /bin/bash
+                - -c
+                - echo "Dummy task"
 
     devedition-promote:
         name: post-langpack-dummy
         description: Dummy task to deal with max_dependencies
         run-on-projects: []
         shipping-phase: promote
         shipping-product: devedition
-        worker-type: succeed
+        worker-type: b-linux
         worker:
-            implementation: succeed
+            implementation: docker-worker
+            os: linux
+            docker-image: "ubuntu:16.10"
+            max-run-time: 600
+            command:
+                - /bin/bash
+                - -c
+                - echo "Dummy task"
--- a/taskcluster/ci/release-notify-promote/kind.yml
+++ b/taskcluster/ci/release-notify-promote/kind.yml
@@ -14,19 +14,26 @@ kind-dependencies:
     - release-generate-checksums-beetmover
     - release-bouncer-sub
 
 job-defaults:
     name: notify-release-drivers-promote
     description: Sends email to release-drivers telling release was promoted.
     run-on-projects: []
     shipping-phase: promote
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
     notifications:
         subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory"
         message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} is in the candidates directory"
         emails:
             by-project:
                 mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
                 try: ["{config[params][owner]}"]
                 default: []
--- a/taskcluster/ci/release-notify-push/kind.yml
+++ b/taskcluster/ci/release-notify-push/kind.yml
@@ -12,19 +12,26 @@ transforms:
 kind-dependencies:
     - release-beetmover-push-to-release
 
 job-defaults:
     name: notify-release-drivers-push
     description: Sends email to release-drivers telling release was pushed.
     run-on-projects: []
     shipping-phase: push
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
     notifications:
         subject: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest"
         message: "{task[shipping-product]} {release_config[version]} build{release_config[build_number]}/{config[params][project]} has been pushed to cdntest"
         emails:
             by-project:
                 mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
                 try: ["{config[params][owner]}"]
                 default: []
--- a/taskcluster/ci/release-notify-ship/kind.yml
+++ b/taskcluster/ci/release-notify-ship/kind.yml
@@ -16,19 +16,26 @@ kind-dependencies:
     - release-version-bump
     - release-mark-as-shipped
 
 job-defaults:
     name: notify-release-drivers-ship
     description: Sends email to release-drivers telling release was shipped.
     run-on-projects: []
     shipping-phase: ship
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
     notifications:
         emails:
             by-project:
                 mozilla-(beta|release|esr.*): ["release-signoff@mozilla.org"]
                 try: ["{config[params][owner]}"]
                 default: []
 
 jobs:
--- a/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml
+++ b/taskcluster/ci/release-partner-repack-chunking-dummy/kind.yml
@@ -28,11 +28,18 @@ only-for-build-platforms:
     - linux64-nightly/opt
 
 job-template:
     shipping-phase: promote
     shipping-product: firefox
     name: release-partner-repack-chunking-dummy
     description: Dummy task to deal with fanning out Linux partner repacks
     run-on-projects: []
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
--- a/taskcluster/ci/release-secondary-notify-ship/kind.yml
+++ b/taskcluster/ci/release-secondary-notify-ship/kind.yml
@@ -13,19 +13,26 @@ kind-dependencies:
     - release-secondary-balrog-scheduling
     - push-apk
 
 job-defaults:
     name: notify-release-drivers-ship
     description: Sends email to release-drivers telling release was shipped.
     run-on-projects: []
     shipping-phase: ship
-    worker-type: succeed
+    worker-type: b-linux
     worker:
-        implementation: succeed
+        implementation: docker-worker
+        os: linux
+        docker-image: "ubuntu:16.10"
+        max-run-time: 600
+        command:
+            - /bin/bash
+            - -c
+            - echo "Dummy task"
     notifications:
         emails:
             by-project:
                 mozilla-beta: ["release-signoff@mozilla.org"]
                 mozilla-release: ["release-signoff@mozilla.org"]
                 try: ["{config[params][owner]}"]
                 default: []
 
--- a/taskcluster/taskgraph/transforms/task.py
+++ b/taskcluster/taskgraph/transforms/task.py
@@ -11,18 +11,16 @@ complexities of worker implementations, 
 from __future__ import absolute_import, print_function, unicode_literals
 
 import hashlib
 import os
 import re
 import time
 from copy import deepcopy
 
-import attr
-
 from mozbuild.util import memoize
 from taskgraph.util.attributes import TRUNK_PROJECTS
 from taskgraph.util.hash import hash_path
 from taskgraph.util.treeherder import split_symbol
 from taskgraph.transforms.base import TransformSequence
 from taskgraph.util.keyed_by import evaluate_keyed_by
 from taskgraph.util.schema import (
     validate_schema,
@@ -226,17 +224,17 @@ task_description_schema = Schema({
 
     # Whether the job should use sccache compiler caching.
     Required('needs-sccache'): bool,
 
     # Set of artifacts relevant to release tasks
     Optional('release-artifacts'): [basestring],
 
     # information specific to the worker implementation that will run this task
-    Optional('worker'): {
+    'worker': {
         Required('implementation'): basestring,
         Extra: object,
     }
 })
 
 TC_TREEHERDER_SCHEMA_URL = 'https://github.com/taskcluster/taskcluster-treeherder/' \
                            'blob/master/schemas/task-treeherder-config.yml'
 
@@ -324,27 +322,22 @@ def get_default_priority(graph_config, p
         {'project': project}
     )
 
 
 # define a collection of payload builders, depending on the worker implementation
 payload_builders = {}
 
 
-@attr.s(frozen=True)
-class PayloadBuilder(object):
-    schema = attr.ib(type=Schema)
-    builder = attr.ib()
-
-
 def payload_builder(name, schema):
     schema = Schema({Required('implementation'): name}).extend(schema)
 
     def wrap(func):
-        payload_builders[name] = PayloadBuilder(schema, func)
+        payload_builders[name] = func
+        func.schema = Schema(schema)
         return func
     return wrap
 
 
 # define a collection of index builders, depending on the type implementation
 index_builders = {}
 
 
@@ -1272,19 +1265,17 @@ def build_treescript_payload(config, tas
 })
 def build_invalid_payload(config, task, task_def):
     task_def['payload'] = 'invalid task - should never be created'
 
 
 @payload_builder('always-optimized', schema={
     Extra: object,
 })
-@payload_builder('succeed', schema={
-})
-def build_dummy_payload(config, task, task_def):
+def build_always_optimized_payload(config, task, task_def):
     task_def['payload'] = {}
 
 
 @payload_builder('script-engine-autophone', schema={
     Required('os'): Any('macosx', 'linux'),
 
     # A link for an executable to download
     Optional('context'): basestring,
@@ -1798,17 +1789,17 @@ def build_task(config, tasks):
         if task_th:
             # link back to treeherder in description
             th_push_link = 'https://treeherder.mozilla.org/#/jobs?repo={}&revision={}'.format(
                 config.params['project'], branch_rev)
             task_def['metadata']['description'] += ' ([Treeherder push]({}))'.format(
                 th_push_link)
 
         # add the payload and adjust anything else as required (e.g., scopes)
-        payload_builders[task['worker']['implementation']].builder(config, task, task_def)
+        payload_builders[task['worker']['implementation']](config, task, task_def)
 
         # Resolve run-on-projects
         build_platform = attributes.get('build_platform')
         resolve_keyed_by(task, 'run-on-projects', item_name=task['label'],
                          **{'build-platform': build_platform})
         attributes['run_on_projects'] = task.get('run-on-projects', ['all'])
         attributes['always_target'] = task['always-target']
         # This logic is here since downstream tasks don't always match their
@@ -1868,21 +1859,21 @@ def chain_of_trust(config, tasks):
 
 @transforms.add
 def check_task_identifiers(config, tasks):
     """Ensures that all tasks have well defined identifiers:
        ^[a-zA-Z0-9_-]{1,38}$
     """
     e = re.compile("^[a-zA-Z0-9_-]{1,38}$")
     for task in tasks:
-        for attrib in ('workerType', 'provisionerId'):
-            if not e.match(task['task'][attrib]):
+        for attr in ('workerType', 'provisionerId'):
+            if not e.match(task['task'][attr]):
                 raise Exception(
                     'task {}.{} is not a valid identifier: {}'.format(
-                        task['label'], attrib, task['task'][attrib]))
+                        task['label'], attr, task['task'][attr]))
         yield task
 
 
 @transforms.add
 def check_task_dependencies(config, tasks):
     """Ensures that tasks don't have more than 100 dependencies."""
     for task in tasks:
         if len(task['dependencies']) > MAX_DEPENDENCIES: