Closed Bug 1371315 Opened 7 years ago Closed 7 years ago

pushing to try with --setenv fails the decision task

Categories

(Taskcluster :: Services, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla56

People

(Reporter: jmaher, Assigned: jmaher)

References

Details

Attachments

(1 file)

{'worker-type': 'aws-provisioner-v1/gecko-{level}-b-linux', 'index': {'product': 'firefox', 'job-name': 'linux64-asan-debug'}, 'run': {'script': 'mozharness/scripts/fx_desktop_build.py', 'secrets': True, 'need-xvfb': True, 'actions': ['get-secrets build check-test update'], 'custom-build-variant-cfg': 'asan-tc-and-debug', 'using': 'mozharness', 'config': ['builds/releng_base_linux_64_builds.py', 'balrog/production.py'], 'tooltool-downloads': 'public'}, 'description': 'Linux64 Debug ASAN', u'needs-sccache': True, 'treeherder': {u'tier': 1, 'platform': 'linux64/asan', 'symbol': 'tc(Bd)', u'kind': u'build'}, u'extra': {u'chainOfTrust': {u'inputs': {u'docker-image': {u'task-reference': u'<docker-image>'}}}}, 'worker': {u'chain-of-trust': True, u'docker-image': {u'in-tree': u'desktop-build'}, 'max-run-time': 36000, 'env': {'TOOLTOOL_MANIFEST': 'browser/config/tooltool-manifests/linux64/asan.manifest', 'PERFHERDER_EXTRA_OPTIONS': 'debug asan'}}, u'name': 'linux64-asan/debug'}
{'worker-type': 'aws-provisioner-v1/gecko-{level}-b-macosx64', 'index': {'product': 'firefox', 'job-name': 'macosx64-noopt-debug'}, 'run': {'script': 'mozharness/scripts/fx_desktop_build.py', 'secrets': True, 'actions': ['get-secrets build update'], 'custom-build-variant-cfg': 'cross-noopt-debug', 'keep-artifacts': False, 'using': 'mozharness', 'config': ['builds/releng_base_mac_64_cross_builds.py', 'balrog/production.py'], 'tooltool-downloads': 'internal'}, 'description': 'MacOS X x64 No-optimize Debug', u'name': 'macosx64-noopt/debug', u'needs-sccache': True, 'treeherder': {'tier': 2, 'platform': 'osx-10-7-noopt/debug', 'symbol': 'tc(B)', u'kind': u'build'}, u'extra': {u'chainOfTrust': {u'inputs': {u'docker-image': {u'task-reference': u'<docker-image>'}}}}, 'worker': {u'chain-of-trust': True, 'docker-image': {'in-tree': 'desktop-build'}, 'max-run-time': 36000, 'env': {'TOOLTOOL_MANIFEST': 'browser/config/tooltool-manifests/macosx64/cross-releng.manifest'}}, 'run-on-projects': ['stylo', 'autoland', 'mozilla-inbound', 'mozilla-central', 'try']}
{'index': {'product': 'firefox', 'job-name': 'macosx64-opt'}, 'run': {'tooltool-downloads': 'internal', 'script': 'mozharness/scripts/fx_desktop_build.py', 'secrets': True, 'using': 'mozharness', 'config': ['builds/releng_base_mac_64_builds.py', 'balrog/production.py'], 'actions': ['get-secrets build update']}, u'name': 'macosx64/opt', u'needs-sccache': True, 'worker-type': 'buildbot-bridge/buildbot-bridge', 'treeherder': {'tier': 2, 'platform': 'osx-10-7/opt', 'symbol': 'tc(B)', u'kind': u'build'}, 'description': 'MacOS X x64'}


the job I am failing on:
{'index': {'product': 'firefox', 'job-name': 'macosx64-opt'}, 'run': {'tooltool-downloads': 'internal', 'script': 'mozharness/scripts/fx_desktop_build.py', 'secrets': True, 'using': 'mozharness', 'config': ['builds/releng_base_mac_64_builds.py', 'balrog/production.py'], 'actions': ['get-secrets build update']}, u'name': 'macosx64/opt', u'needs-sccache': True, 'worker-type': 'buildbot-bridge/buildbot-bridge', 'treeherder': {'tier': 2, 'platform': 'osx-10-7/opt', 'symbol': 'tc(B)', u'kind': u'build'}, 'description': 'MacOS X x64'}

and there is no 'worker' in there, unlike the other jobs.  I assume this broke accidentally, although with a unittest for it, I am curious how it failed:
https://dxr.mozilla.org/mozilla-central/source/taskcluster/taskgraph/test/test_try_option_syntax.py#307


just doing this locally, I am able to move on:
-        if env:
+        if env and 'worker' in job:
:dustin, do you think a small change like above in build.py (https://dxr.mozilla.org/mozilla-central/source/taskcluster/taskgraph/transforms/build.py?q=job_env+%3D+job%5B%27worker%27%5D%5B%27env%27%5D&redirect_type=single#46 ), would be ok?

Is there anyone who would know more history on this code or why some jobs don't have a 'worker'?  I would rather cleanup more gotchas?  Likewise, are the unittests run anywhere?  Possibly they need to be updated?
Flags: needinfo?(dustin)
I think you want job.setdefault('worker', {})['env']
Flags: needinfo?(dustin)
looking at this, that sets job['worker'] = {}, so job['worker']['env'] fails.  I see two options:
1) skip the env clause when there is no worker?  (does it make sense to setenv when there is no worker?)
2) set |job_env = {}| if 'worker' not in job


I like option 2.  I still don't understand what a worker is and why a job wouldn't have one.
I might as well put code up for option #2
Assignee: nobody → jmaher
Status: NEW → ASSIGNED
Attachment #8876205 - Flags: review?(dustin)
The worker key contains information about the worker that will execute the job, including the command and environment variables.  We should really be using setdefault all over the place, but it's easy to forget and when things disappear later, KeyErrors occur at the line where the setdefault is required :)
Attachment #8876205 - Flags: review?(dustin) → review+
Pushed by jmaher@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/5b976d46590c
pushing to try with --setenv fails the decision task, don't assume worker exists on a job. r=dustin
https://hg.mozilla.org/mozilla-central/rev/5b976d46590c
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
Component: Integration → Services
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: