[users at bb.net] Build priority function failing due to attribute error
Chris Spencer
chrisspen at gmail.com
Thu Apr 6 16:44:36 UTC 2017
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 <chrisspen at gmail.com> 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 <tardyp at gmail.com> 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 <chrisspen at gmail.com> 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
>>> users at buildbot.net
>>> https://lists.buildbot.net/mailman/listinfo/users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20170406/09da4075/attachment.html>
More information about the users
mailing list