DamageControl has the ability (see DC-240) to have builds 'pinned' to certain executors. This means that each build can control which executors will, or won't, be allowed to execute it.
Why would I want to pin a build?
Well there's a number of ways this would be useful, but for example in our scenario we have 8 or 9 functional test builds that must be run in serial (ie FTest A, FTest B, FTest C etc). The advantage to having multiple executors allows us to reduce the average time for each build. However if the problem is that if we have a set of serial builds like this we can no longer have multiple executors because we can't guarantee they won't start to parallel each other. Pinning all these builds to a single executor means that they will run in serial, but won't block the entire build queue.
So how do I pin a build?
It's not documented anywhere (hence why I'm writing this FAQ) but it really is quite simple.
To pin a build, you need to edit it's conf.yaml file (usually located in DCHOME/work/projectname) and add the following line:
executor_selector: FunctionalTests
(this will pin the current build to only the "FunctionalTests" build executor)
The executor_selector property is a regex that must match the executor name. The default value is \.* - hence the default is to match all executors.
Why can't I pin a build through the web UI?
This feature hasn't been implemented yet, but it is scheduled (DC-241).
