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

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
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 import master.try_job_decoration as decor
12 13
13 class TryJobBaseMixIn: 14 class TryJobBaseMixIn:
14 _last_lkgr = None 15 _last_lkgr = None
15 16
16 def __init__(self): 17 def __init__(self):
17 pass 18 pass
18 19
19 def SubmitJob(self, parsed_job, changeids): 20 def SubmitJob(self, parsed_job, changeids):
20 if not parsed_job['bot']: 21 if not parsed_job['bot']:
21 raise BadJobfile( 22 raise BadJobfile(
22 'incoming Try job did not specify any allowed builder names') 23 'incoming Try job did not specify any allowed builder names')
23 24
24 d = self.master.db.sourcestamps.addSourceStamp( 25 d = self.master.db.sourcestamps.addSourceStamp(
25 branch=parsed_job['branch'], 26 branch=parsed_job['branch'],
26 revision=parsed_job['revision'], 27 revision=parsed_job['revision'],
27 patch_body=parsed_job['patch'], 28 patch_body=parsed_job['patch'],
28 patch_level=parsed_job['patchlevel'], 29 patch_level=parsed_job['patchlevel'],
29 patch_subdir=parsed_job['root'], 30 patch_subdir=parsed_job['root'],
30 project=parsed_job['project'], 31 project=parsed_job['project'],
31 repository=parsed_job['repository'] or '', 32 repository=parsed_job['repository'] or '',
32 changeids=changeids) 33 changeids=changeids)
33 def create_buildset(ssid): 34 def create_buildset(ssid):
34 log.msg('Creating try job %s' % ssid) 35 log.msg('Creating try job(s) %s' % ssid)
35 return self.addBuildsetForSourceStamp(ssid=ssid, 36 result = None
36 reason=parsed_job['name'], 37 for build in parsed_job['bot']:
M-A Ruel 2011/12/09 21:50:29 builder build is confusing.
Peter Mayo 2011/12/10 01:08:27 Same as other instance.
37 external_idstring=parsed_job['name'], 38 bot = build.split(':')[0]
M-A Ruel 2011/12/09 21:50:29 bot = build.split(':', 1)[0]
Peter Mayo 2011/12/10 01:08:27 Done.
38 builderNames=parsed_job['bot'], 39 result = self.addBuildsetForSourceStamp(ssid=ssid,
39 properties=self.get_props(parsed_job)) 40 reason=parsed_job['name'],
41 external_idstring=parsed_job['name'],
42 builderNames=[bot],
43 properties=decor.parse_decoration(self.get_props(parsed_job),
44 ':'.join(build.split(':')[1:])))
M-A Ruel 2011/12/09 21:50:29 ''.join(build.split(':', 1)[1:]) will work even if
Peter Mayo 2011/12/10 01:08:27 FWIW, so does the existing syntax, by experiment a
45
46 return result
40 d.addCallback(create_buildset) 47 d.addCallback(create_buildset)
41 d.addErrback(log.err, "Failed to queue a try job!") 48 d.addErrback(log.err, "Failed to queue a try job!")
42 return d 49 return d
43 50
44 def get_lkgr(self, options): 51 def get_lkgr(self, options):
45 """Grabs last known good revision number if necessary.""" 52 """Grabs last known good revision number if necessary."""
46 options['rietveld'] = (self.code_review_sites or {}).get(options['project']) 53 options['rietveld'] = (self.code_review_sites or {}).get(options['project'])
47 last_good_url = (self.last_good_urls or {}).get(options['project']) 54 last_good_url = (self.last_good_urls or {}).get(options['project'])
48 if options['revision'] or not last_good_url: 55 if options['revision'] or not last_good_url:
49 return defer.succeed(0) 56 return defer.succeed(0)
50 57
51 def Success(result): 58 def Success(result):
52 try: 59 try:
53 new_value = int(result.strip()) 60 new_value = int(result.strip())
54 except (TypeError, ValueError): 61 except (TypeError, ValueError):
55 new_value = None 62 new_value = None
56 if new_value and (not self._last_lkgr or new_value > self._last_lkgr): 63 if new_value and (not self._last_lkgr or new_value > self._last_lkgr):
57 self._last_lkgr = new_value 64 self._last_lkgr = new_value
58 options['revision'] = self._last_lkgr or 'HEAD' 65 options['revision'] = self._last_lkgr or 'HEAD'
59 66
60 def Failure(result): 67 def Failure(result):
61 options['revision'] = self._last_lkgr or 'HEAD' 68 options['revision'] = self._last_lkgr or 'HEAD'
62 69
63 connection = client.getPage(last_good_url, agent='buildbot') 70 connection = client.getPage(last_good_url, agent='buildbot')
64 connection.addCallbacks(Success, Failure) 71 connection.addCallbacks(Success, Failure)
65 return connection 72 return connection
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698