Is there any guidance or examples for how a nextBuild callback should be written?
On Tue, Apr 4, 2017 at 6:33 PM, Chris Spencer <[email protected]> wrote: > What would the fix be? I tried this: > > def nextBuild(bldr, requests): > > def has_one(sources, branch): > for key, data in sources: > if data.branch == branch: > return True > return False > > for r in requests: > if has_one(r.sources, 'master'): > # Master always comes first. > return r > elif has_one(r.sources, 'staging'): > # Ignore staging until the end. > continue > else: > # Otherwise, do the first build we see. > return r > return requests[0] > > c['builders'] = [] > c['builders'].append( > util.BuilderConfig( > name="runtests", > workernames=["example-worker"], > collapseRequests=True, > nextBuild=nextBuild, > factory=factory)) > > but that caused it to stop running all builds. > > On Mon, Apr 3, 2017 at 2:52 PM, Pierre Tardy <[email protected]> wrote: > >> Hi Chris, >> Since buildbot nine, a buildrequest can have several sourcestamps, >> because it can be collapsed. >> So there is no source attribute anymore, but a sources attribute, as per >> source code: >> https://github.com/buildbot/buildbot/blob/master/master/buil >> dbot/process/buildrequest.py#L175 >> >> Can submit a documentation fix for this bug you found? >> >> Thanks >> Pierre >> >> On Mon, Apr 3, 2017 at 7:45 PM Chris Spencer <[email protected]> wrote: >> >>> I'm trying to create a build priority function, as outlined at >>> http://docs.buildbot.net/latest/manual/customization.html# >>> build-priority-functions, to ensure all non-staging branches are run >>> first. >>> >>> My code looks like: >>> >>> def nextBuild(bldr, requests): >>> for r in requests: >>> if r.source.branch == 'master': >>> # Master always comes first. >>> return r >>> elif r.source.branch == 'staging': >>> # Ignore staging until the end. >>> continue >>> else: >>> # Otherwise, do the first build we see. >>> return r >>> return requests[0] >>> >>> c['builders'] = [] >>> c['builders'].append( >>> util.BuilderConfig(name="runtests", >>> workernames=["example-worker"], >>> collapseRequests=True, >>> nextBuild=nextBuild, >>> factory=factory)) >>> >>> However, this has stopped all builds from running, with the logs showing: >>> >>> File "/usr/local/myproject/.env/local/lib/python2.7/site-packages >>> /buildbot/process/buildrequestdistributor.py", line 237, in >>> _getNextUnclaimedBuildRequest >>> nextBreq = yield self.nextBuild(self.bldr, breqs) >>> File "/usr/local/myproject/src/buildbot/master/master.cfg", line >>> 130, in nextBuild >>> if r.source.branch == 'master': >>> exceptions.AttributeError: 'BuildRequest' object has no attribute >>> 'source' >>> >>> Why is the BuildRequest object missing the source attribute, as referred >>> to in the documentation? Is the documentation incorrect? >>> _______________________________________________ >>> users mailing list >>> [email protected] >>> https://lists.buildbot.net/mailman/listinfo/users >> >> >
_______________________________________________ users mailing list [email protected] https://lists.buildbot.net/mailman/listinfo/users
