Hi folks,
Apologies for the late response here, but I believe I have good news!
An option which I believe will suit your needs, but I confess we’ve not been very good at explaining is what we call concurrency gating.
In short, the jobs which are part of a concurrency group within a given build which are eligible to run (i.e. not following a currently blocked block step, are not preceded by a failure) must all finish before another build’s jobs in that concurrency group are permitted to run.
This means you can make a no-op or some other preparatory step (we’re using echo
commands, but what is run in the step doesn’t matter) to denote the start of the “gate”, and another to denote the end, and anything between those two steps which share a concurrency group must finish before the gate will be reopened to other work.
Now, I must concede that this is not, explicitly, a limit on concurrent builds, but it is functionally more or less equivalent without tying up other resources, and works today.
I hope this helps!