How to run variant builds without TC optimising them into one build on the queue


I'm trying to run a group of builds which all use the same source but generate different variants depending on the values of TC parameters that I pass to the build runner. What I'd like to be able to do is have just the one build config, rather than one per variant - lets call this config 'B'.

As each of these built variants then has to be combined with other builds to make a deployable product, my idea was to have a set of per-product builds, 'Pn', with snapshot & artifact dependencies to the various builds that comprise the product, including to 'B', and to add reverse.dep....  parameters to each 'Pn' in order to set the variant parameter values used in 'B'.
( snapshots are set to 'always run new build', artifacts are located in varianted folders ). Hence product P1 will contain variant B1, P2 will have B2, etc.

This works fine for building one varianted product, but I actually want to build several, so I tried creating a separate project, 'X', that has snapshot dependencies to P1, P2, etc.
If I then try running X, only the first varianted build of 'B' is queued, so P1 builds ok but P2 fails with missing artifacts (from B2).

Is there a way to persuade TC to run all of the varianted builds, or will I have to find another approach ?

thanks for any help

Comment actions Permalink


In the case that you describe only one build B will be used, because there could be only one build for the build configuration in the build chain.
The recommended way is to configure separate build configurations for B1...Bn products. You can use templates to simplify the setup.

Comment actions Permalink

Ok, thanks;  I may need to revist build chains when I spend more time on our Mercurial builds.

In the meantime I think I have a solution to what I'm trying to do with builds that use a much older SCCS, although its probably not what you'd call elegant.
If I use only artifact dependencies in my top-level project then I can run a Python script that uses the REST API to scan through them and kick off the relevant next-level builds, i.e. the Pn in my original post.


Please sign in to leave a comment.