Home | Trees | Indices | Help |
|
---|
|
1 from buildbot.process import base 2 from buildbot.status import builder 3 from buildbot.process.properties import Properties 4 57 """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).""" 128415 """ 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 3335 return self.properties3638 """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)5961 # 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()
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Jan 21 21:26:25 2010 | http://epydoc.sourceforge.net |