What is the purpose of the milestone step in Jenkins pipelines?
The milestone step helps control concurrency by marking a point in the pipeline. It ensures that only the latest build passes this point, canceling older builds that are behind it.
Click to reveal answer
beginner
How does the milestone step improve pipeline efficiency?
It prevents multiple builds from running the same or outdated stages by canceling older builds that haven't reached the milestone, saving resources and time.
Click to reveal answer
intermediate
Where should you place the milestone step in a Jenkins pipeline?
Place it at key points in the pipeline where you want to ensure only the latest build continues, such as before long-running or resource-heavy stages.
Click to reveal answer
intermediate
What happens if an older build reaches a milestone after a newer build has already passed it?
The older build is stopped immediately to avoid redundant work, ensuring only the newest build proceeds.
Click to reveal answer
beginner
Write a simple Jenkins pipeline snippet using the milestone step.
BStops older builds that are behind the latest milestone
CStarts a new build automatically
DSaves build artifacts
✗ Incorrect
The milestone step stops older builds that have not reached the milestone when a newer build passes it.
Where is the best place to use the milestone step in a Jenkins pipeline?
ABefore long-running or resource-heavy stages
BAt the very end of the pipeline
COnly in the deployment stage
DIn the post-build actions
✗ Incorrect
Placing milestone before heavy stages helps cancel outdated builds early, saving resources.
If a newer build passes a milestone, what happens to older builds that haven't reached it?
AThey are stopped immediately
BThey are paused
CThey continue running normally
DThey restart from the beginning
✗ Incorrect
Older builds behind the milestone are stopped to avoid redundant work.
Which of these is NOT a benefit of using the milestone step?
AReducing resource usage
BEnsuring only the latest build proceeds
CImproving pipeline efficiency
DAutomatically fixing build errors
✗ Incorrect
The milestone step does not fix errors; it manages concurrency.
How do you specify a milestone number in a Jenkins pipeline?
Amilestone(true)
Bmilestone 'build'
Cmilestone 1
Dmilestone()
✗ Incorrect
You specify the milestone with a number like milestone 1.
Explain how the milestone step helps manage concurrency in Jenkins pipelines.
Think about how to avoid running outdated builds.
You got /4 concepts.
Describe a scenario where using the milestone step would improve your Jenkins pipeline.
Imagine many builds queued and wasting resources.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of the milestone step in a Jenkins pipeline?
easy
A. To allow only the latest pipeline run to continue past a certain point
B. To trigger a new pipeline run automatically
C. To send notifications when a build fails
D. To archive build artifacts for later use
Solution
Step 1: Understand the role of the milestone step
The milestone step is designed to control concurrency by ensuring only the newest pipeline run proceeds beyond the milestone point.
Step 2: Compare with other pipeline steps
Other steps like triggering builds or sending notifications do not control concurrency like milestone does.
Final Answer:
To allow only the latest pipeline run to continue past a certain point -> Option A
Quick Check:
Milestone controls concurrency = B [OK]
Hint: Milestone lets only the newest run pass a checkpoint [OK]
Common Mistakes:
Confusing milestone with notification steps
Thinking milestone triggers builds
Assuming milestone archives artifacts
2. Which of the following is the correct syntax to add a milestone step with label "BuildCheckpoint" in a Jenkins declarative pipeline?
easy
A. milestone label: 'BuildCheckpoint'
B. milestone('BuildCheckpoint')
C. milestone label = 'BuildCheckpoint'
D. milestone: 'BuildCheckpoint'
Solution
Step 1: Recall the correct milestone syntax
The milestone step uses named parameters with the syntax: milestone label: 'LabelName'.
Step 2: Identify syntax errors in other options
Options B, C, and D have incorrect syntax such as missing named parameter format or wrong punctuation.
Final Answer:
milestone label: 'BuildCheckpoint' -> Option A
Quick Check:
Correct milestone syntax uses label: 'name' [OK]
Hint: Use named parameter syntax: milestone label: 'Name' [OK]
Common Mistakes:
Using parentheses instead of named parameters
Using equal sign instead of colon
Omitting the label keyword
3. Given this Jenkins pipeline snippet:
stage('Test') {
steps {
milestone label: 'TestStart'
echo 'Running tests'
}
}
// Two pipeline runs start quickly one after another
What happens to the first pipeline run when the second run reaches the same milestone?
medium
A. The first run continues normally alongside the second
B. The second run waits until the first run finishes
C. The first run is aborted and only the second run continues past the milestone
D. Both runs are aborted at the milestone
Solution
Step 1: Understand milestone concurrency behavior
When multiple runs reach the same milestone label, Jenkins allows only the latest run to proceed and aborts older runs at that point.
Step 2: Apply this to the scenario
The second run reaching 'TestStart' milestone causes the first run to abort at that milestone, so only the second run continues.
Final Answer:
The first run is aborted and only the second run continues past the milestone -> Option C
Quick Check:
Milestone aborts older runs = D [OK]
Hint: Milestone aborts older runs, keeps newest only [OK]
Common Mistakes:
Thinking both runs continue
Assuming second run waits
Believing both runs abort
4. You added a milestone step in your Jenkins pipeline but it does not seem to abort older runs as expected. Which of the following is the most likely cause?
medium
A. The pipeline is missing the agent block
B. The milestone step is placed after all stages have completed
C. The milestone label is not unique and is reused in multiple places
D. The Jenkins server is offline
Solution
Step 1: Check milestone placement
The milestone step is most likely placed after all stages have completed. This makes it ineffective because older runs finish before a newer run can reach the milestone to trigger aborts.
Step 2: Evaluate other options
Label reuse affects log clarity but not concurrency control (ordinals matter). Missing agent prevents runs entirely. Server offline stops everything.
Final Answer:
The milestone step is placed after all stages have completed -> Option B
Quick Check:
Milestone placement before completion critical = A [OK]
Hint: Place milestone before critical/protected sections [OK]
Common Mistakes:
Placing milestone after all stages
Blaming unrelated pipeline syntax
Assuming server offline causes milestone issues
5. You want to ensure that only the latest run of your Jenkins pipeline proceeds past the "Deploy" stage, aborting any previous runs stuck at that point. How should you use the milestone step to achieve this?
hard
A. Use milestone label: 'Deploy' only in the first stage
B. Place milestone label: 'Deploy' at the end of the Deploy stage
C. Place milestone label: 'Deploy' in every stage before Deploy
D. Place milestone label: 'Deploy' at the start of the Deploy stage
Solution
Step 1: Identify where to place milestone for concurrency control
To abort older runs before deploying, place the milestone step at the start of the Deploy stage so only the newest run proceeds.
Step 2: Understand why other placements fail
Placing milestone at the end or in other stages won't stop older runs before deployment. Using it only in the first stage doesn't control concurrency at Deploy.
Final Answer:
Place milestone label: 'Deploy' at the start of the Deploy stage -> Option D
Quick Check:
Milestone at stage start controls concurrency there [OK]
Hint: Put milestone at stage start to block old runs [OK]
Common Mistakes:
Placing milestone too late in the stage
Using milestone in unrelated stages
Not placing milestone at all
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.