[users at bb.net] Trigger new build/scheduler when two related builds are finished

Yngve N. Pettersen yngve at vivaldi.com
Mon Jul 31 09:00:56 UTC 2023


Hello all,

We have a build sequence that consists of two separate builds that are then 
combined into a single product (specifically, this concerns Mac x64 and 
arm64 builds being used to generate a universal DMG installer)

At present we are building both sequentially on the same build worker which 
makes the system work, but we are now preparing a new worker that will be 
used for the arm64 build.

The plan is to start both builds at the same time, but that prevents the 
transfer of the (build properties) data necessary to combine the products 
into a universal installer. We could, of course, continue with the 
sequential builds, but the reason for the second builder is that these 
combined builds take very long to generate. 

The Dependent scheduler 
<http://docs.buildbot.net/current/manual/configuration/schedulers.html#dependent-scheduler> 
(which, BTW is still the v3.6 version of the documentation, not the v3.8 
version) seems to fit the bill for what we need, *except* that it depends 
on *all* the builds triggered by the initial scheduler, not just specific 
builders in that set. That is not desirable in our scenario.

What we need is something like

--------------

 from buildbot.plugins import schedulers
build = schedulers.SingleBranchScheduler(name="build",
                                          treeStableTimer=5*60,
                                          builderNames=["builder1", 
"builder2", "builder3", ..., "builderN"])
second_step = schedulers.Dependent(name="second-step"",
                                upstream=build,
                                upstream_builders=["builder1", "builder2"]
                                builderNames=["second_step_builder"])
---------------

This would trigger "second-step" when both "builder1" and "builder2" have 
completed their jobs, ignoring the state of the other builders.

Is there any way to accomplish this currently, either directly, or by 
creating a subclass of Dependent?


There is, however, if I read the documentation correctly, a problem with 
Dependent: It sounds like there is no transfer of build properties from the 
upstream builders, which is a problem, since those properties are necessary 
to inform the second step builder where to locate the data needed for its 
build.


A different method that might work better could be a scheduler that 
triggers when it has received all Triggers from specific builders in a 
particular scheduler job


Any thoughts about this possibility?

-- 
Sincerely,
Yngve N. Pettersen
Vivaldi Technologies AS


More information about the users mailing list