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

Side by Side Diff: third_party/buildbot_7_12/buildbot/buildset.py

Issue 12207158: Bye bye buildbot 0.7.12. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months 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
(Empty)
1 from buildbot.process import base
2 from buildbot.status import builder
3 from buildbot.process.properties import Properties
4
5
6 class BuildSet:
7 """I represent a set of potential Builds, all of the same source tree,
8 across a specified list of Builders. I can represent a build of a
9 specific version of the source tree (named by source.branch and
10 source.revision), or a build of a certain set of Changes
11 (source.changes=list)."""
12
13 def __init__(self, builderNames, source, reason=None, bsid=None,
14 properties=None):
15 """
16 @param source: a L{buildbot.sourcestamp.SourceStamp}
17 """
18 self.builderNames = builderNames
19 self.source = source
20 self.reason = reason
21
22 self.properties = Properties()
23 if properties: self.properties.updateFromProperties(properties)
24
25 self.stillHopeful = True
26 self.status = bss = builder.BuildSetStatus(source, reason,
27 builderNames, bsid)
28
29 def waitUntilSuccess(self):
30 return self.status.waitUntilSuccess()
31 def waitUntilFinished(self):
32 return self.status.waitUntilFinished()
33
34 def getProperties(self):
35 return self.properties
36
37 def start(self, builders):
38 """This is called by the BuildMaster to actually create and submit
39 the BuildRequests."""
40 self.requests = []
41 reqs = []
42
43 # create the requests
44 for b in builders:
45 req = base.BuildRequest(self.reason, self.source, b.name,
46 properties=self.properties)
47 reqs.append((b, req))
48 self.requests.append(req)
49 d = req.waitUntilFinished()
50 d.addCallback(self.requestFinished, req)
51
52 # tell our status about them
53 req_statuses = [req.status for req in self.requests]
54 self.status.setBuildRequestStatuses(req_statuses)
55
56 # now submit them
57 for b,req in reqs:
58 b.submitBuildRequest(req)
59
60 def requestFinished(self, buildstatus, req):
61 # TODO: this is where individual build status results are aggregated
62 # into a BuildSet-wide status. Consider making a rule that says one
63 # WARNINGS results in the overall status being WARNINGS too. The
64 # current rule is that any FAILURE means FAILURE, otherwise you get
65 # SUCCESS.
66 self.requests.remove(req)
67 results = buildstatus.getResults()
68 if results == builder.FAILURE:
69 self.status.setResults(results)
70 if self.stillHopeful:
71 # oh, cruel reality cuts deep. no joy for you. This is the
72 # first failure. This flunks the overall BuildSet, so we can
73 # notify success watchers that they aren't going to be happy.
74 self.stillHopeful = False
75 self.status.giveUpHope()
76 self.status.notifySuccessWatchers()
77 if not self.requests:
78 # that was the last build, so we can notify finished watchers. If
79 # we haven't failed by now, we can claim success.
80 if self.stillHopeful:
81 self.status.setResults(builder.SUCCESS)
82 self.status.notifySuccessWatchers()
83 self.status.notifyFinishedWatchers()
84
OLDNEW
« no previous file with comments | « third_party/buildbot_7_12/buildbot/buildbot.png ('k') | third_party/buildbot_7_12/buildbot/buildslave.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698