setting priority of multiple build engines
Accepted answer
Comments
You know what Nick, that isn't too bad of an option (adjusting the sleepTime). But as you point out, it would definitely not be an exacting solution. If a working model is implemented it is probably one that would make me cringe each time I remember how it works.
2 other answers
as the answer to the first question suggests, there is nothing so far. The JBE is supposed to be a simple engine and not sophisticated. It works on build definitions. The first build engine available will poll the queues it supports and will grab the first pending build request it finds. You could try to explore the REST or java API's if you are able to force a build engine to do what you want. I am not sure that will work.
Some links I have for API's: https://jazz.net/library/article/1229 , https://jazz.net/library/article/807 and all the stuff on my blog (there is no build related post however).
Comments
Sure I agree (and I've read that in other articles), the JBE is supposed to be a simple engine. But it is also the richest of all the "engine" options out there for RTC builds. None of the other "engine" options offer the same level of rich functionality out of the box. Depending on how you setup your environment in terms of code flow (making use of a green build stream--having scheduled builds based on developer activity just to name a few), you lose all of that functionality when considering other build engines. Point in case if you setup your build environment to make use of a green build stream which automatically delivers change sets to an integration stream after a successful build, the JBE gives you that through a very simple mechanism. If I consider the build agent for a build engine as apposed to the JBE then you lose that; you're required to set that up for yourself via other means. The end result for me is a net loss. I have too much work already on my plate to now have to re-implement what we've already implemented using the JBE.
We got a similar goal: we have different JBEs running on different hosts all supporting the same build definition. One of these JBEs runs on a "special" host and we have to force build definition to use this "special" JBE according to some build request properties.
Currently you can set the following property in your build engine definition: requestFilter. If you set this property to personalBuild=false then you can enforce no personal builds on the respective build engine (so you influenced some level of control).Based on this statement, we could set property requestFilter="personalBuild=true" on the "special" JBE and request a personal build to force picking up the "special" JBE. Correct?
Comments
According to Build FAQ, we could even activate/deactivate all JBEs but the special one when we have to request this special build:
You can prevent a given engine from picking up new builds by unchecking the 'Active' checkbox in the build engine editor; this does not affect any in-progress builds.
It escapes me why you want to do all of that complex stuff if you could simply create a new build definition from the existing one and have the "special" build engine exclusively running on that build.
Ops, we forgotten to explicit the prerequisite that we can't create a new build definition.
This makes even less sense, why would you not be able to create a new build definition? Get that fixed.
Well, there's nothing to get fixed: no new build definitions is a prerequisite. Cheers.
Well, good luck then. Cheers.
The build engine selection process appears to start before the Jazz server has started executing any code (ant scripts) that I have control over, so I don't think I can control that selection programmatically.
Comments
Rob Leach
Aug 04 '14, 9:51 p.m.Oh and I should add a quick note. I'm sure a build setup using Jenkins could possibly solve this problem, but we are far out from migrating to Jenkins anytime soon; so that is not an option for us at this moment.