-
Bug
-
Resolution: Fixed
-
Minor
-
None
The docs suggest that marking a stage with "concurrency: 1" will allow only the latest build to run, and that if older builds reach such a section, it will stop executing:
"The stage command lets you mark certain sections of a build as being constrained by limited concurrency.
Newer builds are always given priority when entering such a throttled stage; older builds will simply exit early if they are preëmpted."
I instead observed an older build simply waiting until a newer build had finished, and then continuing to run the concurrency: 1 section.
This is a problem for us this is our deploy stage, and we wish to only deploy the latest code.
- is related to
-
JENKINS-27039 Option for input or stage step to cancel older executions
-
- In Review
-
- links to
The current behavior is as designed. Older builds are canceled if there is a newer build waiting to enter the stage. In other words, if build 1 is in the stage, 2 is waiting to enter, and 3 gets to the same stage statement, 2 will be canceled. If builds reach the stage statement out of order, so build 1 takes a long time to get through earlier stages, and then build 2 enters the stage, 1 will wait for it to exit the stage and then proceed.
I think what you are looking for is the linear option suggested in
JENKINS-27039. I will not mark this a duplicate since the main planned fix there is the eager option, which is for a different purpose.