Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: scripts/master/try_job_base_bb8.py

Issue 8847005: Add decorations to bot names for modifying parts of try sets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « scripts/master/try_job_base_bb7.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from twisted.python import log 5 from twisted.python import log
6 from twisted.web import client 6 from twisted.web import client
7 7
8 from buildbot.schedulers.trysched import TryBase # pylint: disable=W0611 8 from buildbot.schedulers.trysched import TryBase # pylint: disable=W0611
9 from buildbot.schedulers.trysched import BadJobfile # pylint: disable=W0611 9 from buildbot.schedulers.trysched import BadJobfile # pylint: disable=W0611
10 from twisted.internet import defer 10 from twisted.internet import defer
11 11
12
13 class TryJobBaseMixIn: 12 class TryJobBaseMixIn:
14 _last_lkgr = None 13 _last_lkgr = None
15 14
16 def __init__(self): 15 def __init__(self):
17 pass 16 pass
18 17
19 def SubmitJob(self, parsed_job, changeids): 18 def SubmitJob(self, parsed_job, changeids):
20 if not parsed_job['bot']: 19 if not parsed_job['bot']:
21 raise BadJobfile( 20 raise BadJobfile(
22 'incoming Try job did not specify any allowed builder names') 21 'incoming Try job did not specify any allowed builder names')
23 22
24 d = self.master.db.sourcestamps.addSourceStamp( 23 d = self.master.db.sourcestamps.addSourceStamp(
25 branch=parsed_job['branch'], 24 branch=parsed_job['branch'],
26 revision=parsed_job['revision'], 25 revision=parsed_job['revision'],
27 patch_body=parsed_job['patch'], 26 patch_body=parsed_job['patch'],
28 patch_level=parsed_job['patchlevel'], 27 patch_level=parsed_job['patchlevel'],
29 patch_subdir=parsed_job['root'], 28 patch_subdir=parsed_job['root'],
30 project=parsed_job['project'], 29 project=parsed_job['project'],
31 repository=parsed_job['repository'] or '', 30 repository=parsed_job['repository'] or '',
32 changeids=changeids) 31 changeids=changeids)
33 def create_buildset(ssid): 32 def create_buildset(ssid):
34 log.msg('Creating try job %s' % ssid) 33 log.msg('Creating try job(s) %s' % ssid)
35 return self.addBuildsetForSourceStamp(ssid=ssid, 34 result = None
36 reason=parsed_job['name'], 35 for build in parsed_job['bot']:
37 external_idstring=parsed_job['name'], 36 bot = build.split(':', 1)[0]
38 builderNames=parsed_job['bot'], 37 result = self.addBuildsetForSourceStamp(ssid=ssid,
39 properties=self.get_props(parsed_job)) 38 reason=parsed_job['name'],
39 external_idstring=parsed_job['name'],
40 builderNames=[bot],
41 properties=self.parse_decoration(
42 self.get_props(parsed_job), ''.join(build.split(':', 1)[1:])))
43
44 return result
40 d.addCallback(create_buildset) 45 d.addCallback(create_buildset)
41 d.addErrback(log.err, "Failed to queue a try job!") 46 d.addErrback(log.err, "Failed to queue a try job!")
42 return d 47 return d
43 48
44 def get_lkgr(self, options): 49 def get_lkgr(self, options):
45 """Grabs last known good revision number if necessary.""" 50 """Grabs last known good revision number if necessary."""
46 options['rietveld'] = (self.code_review_sites or {}).get(options['project']) 51 options['rietveld'] = (self.code_review_sites or {}).get(options['project'])
47 last_good_url = (self.last_good_urls or {}).get(options['project']) 52 last_good_url = (self.last_good_urls or {}).get(options['project'])
48 if options['revision'] or not last_good_url: 53 if options['revision'] or not last_good_url:
49 return defer.succeed(0) 54 return defer.succeed(0)
50 55
51 def Success(result): 56 def Success(result):
52 try: 57 try:
53 new_value = int(result.strip()) 58 new_value = int(result.strip())
54 except (TypeError, ValueError): 59 except (TypeError, ValueError):
55 new_value = None 60 new_value = None
56 if new_value and (not self._last_lkgr or new_value > self._last_lkgr): 61 if new_value and (not self._last_lkgr or new_value > self._last_lkgr):
57 self._last_lkgr = new_value 62 self._last_lkgr = new_value
58 options['revision'] = self._last_lkgr or 'HEAD' 63 options['revision'] = self._last_lkgr or 'HEAD'
59 64
60 def Failure(result): 65 def Failure(result):
61 options['revision'] = self._last_lkgr or 'HEAD' 66 options['revision'] = self._last_lkgr or 'HEAD'
62 67
63 connection = client.getPage(last_good_url, agent='buildbot') 68 connection = client.getPage(last_good_url, agent='buildbot')
64 connection.addCallbacks(Success, Failure) 69 connection.addCallbacks(Success, Failure)
65 return connection 70 return connection
OLDNEW
« no previous file with comments | « scripts/master/try_job_base_bb7.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698