Hi folks,
first of all thanks to the team and contributors for working on Buildbot. I enjoyed deploying it in version 0.8 and really dig the new Web interface of 0.9. However, during the port of one of my custom builders I hit a problem concerning changes. I read the documentation many times, dived into the source code and tried many things, but fear I can't solve this by myself. So any help would be really appreciated. In order to avoid the X/Y-problem, I'd like to describe my usecase first: I use Buildbot to run pre-merge continuous integration checks on a range of projects backed by Gerrit. A subclassed `GerritChangeSource` reacts on published reviews, adds all these as Buildbot changes to the database which triggers a custom builder. This builder now looks at all incoming changes, does some dependency calculations (due to projects with submodules) and triggers builds on multiple schedulers, each with a subset of the incoming changes (and some sourcestamps generated due to dependencies). This allows for each published Gerrit change to be built as stand-alone as possible. All these classes (`GerritChangeSource` subclass and the buildstep for the custom builder) were written for Buildbot 0.8 and worked great. With 0.9.14 (after rewriting them according to `Upgrading to Nine`, not so much. Since there's a short and a long version of the problem, I'll give you both. The short version: In version 0.8 each build got all the changes that were added by the connected `ChangeSource` (using `self.build.allChanges()`). In version 0.9.14 this only ever returns one change. How can I get all changes the `ChangeSource` added? The long version: I subclass `GerritChangeSource` to receive Buildbot changes from Gerrit. Subclassing is mostly done to have a way of forcing rebuilds for a Gerrit change. Whenever a Gerrit change is published, I can see in the twistd.log that the expected number of changes are added to the database. So for two Gerrit changes that are published I see two Buildbot changes added to the database according to twistd.log. There only is one scheduler which reacts on these Gerrit changes (using `util.GerritChangeFilter` as `change_filter`). This scheduler only has one connected builder, which has `collapseRequests` set to `False`. This builder is triggered by the `ChangeSource` and its one and only step starts. This custom step implements `buildstep.ShellMixin` and `buildstep.Buildstep`. Inside the run method I now try to access all changes added by the ChangeSource for this build. Now here's the problem. - `self.build.allChanges()` only ever returns a list of size 1, containing only the latest change. - `self.build.requests()` also only ever returns a list of size 1 (and each request only ever has one change in each of the codebases). - `self.build.build_status.getChanges()` only ever returns a list of size 1, containing only the latest change. How can I access all changes that were added by the `ChangeSource`? They are sometimes listed on the `Changes` tab in the Web-UI (sometimes the same commit is shown multiple times here), but I cannot seem to get at them from inside the buildstep itself. Did I miss any vital information? Is there anything I can explain in more detail? Any help in this matter would be greatly appreciated. Best Regards Lennart Sauerbeck
_______________________________________________ users mailing list users@buildbot.net https://lists.buildbot.net/mailman/listinfo/users