Details
-
Type:
New Feature
-
Status: Open (View Workflow)
-
Priority:
Major
-
Resolution: Unresolved
-
Component/s: pipeline-milestone-step-plugin
-
Labels:None
-
Similar Issues:
Description
It is sometimes desirable for a job (such as a branch project) to simply abort any previously running builds as soon as a new build starts. For example, in a branch project for a pull request, you might want to see test results from an earlier commit even after pushing follow-up commits, but most of the time you only care about the results of the PR head, and computer time might be too valuable to waste on the older ones.
(I think gerrit-trigger does something like this automatically, and I have seen Alex Gray invent the same kind of pattern with JenkinsPy.)
Merely setting the job to not be concurrent-capable does not suffice, since then newer builds will queue up waiting for the older ones to finish.
Manual equivalent courtesy of Brandon Squizzato:
def buildNumber = BUILD_NUMBER as int; if (buildNumber > 1) milestone(buildNumber - 1); milestone(buildNumber)
Attachments
Issue Links
- is related to
-
JENKINS-43132 Cancel existing job if the new job is pending
-
- Resolved
-
-
JENKINS-47503 Abort ongoing builds of PR if new change to the same PR was submitted
-
- Resolved
-
- relates to
-
JENKINS-40936 Milestone should be able to abort older builds when reaching the same milestone
-
- Open
-
-
JENKINS-39180 Milestone option to coalesce queue items while awaiting executor
-
- Open
-
-
JENKINS-58625 Use milestone to cancel older builds
-
- Resolved
-
- links to
Kamil Magomedov
Build #1 would define milestone(1)
Build #2 would define milestone(1) and milestone(2)
Build #3 would define milestone(2) and milestone(3)
Build #4 would define milestone(3) and milestone(4)
and so on ...
Every time a build runs, it is passing the highest milestone of the previous build. This causes the previous build to abort. From https://jenkins.io/doc/pipeline/steps/pipeline-milestone-step/ –
> The milestone step forces all builds to go through in order, so an older build will never be allowed pass a milestone (it is aborted) if a newer build already passed it.