What if your pipeline could wait for your 'go ahead' with just one click, no emails needed?
Why Input step for manual approval in Jenkins? - Purpose & Use Cases
Imagine you have a software pipeline that automatically builds and tests your app. But before it goes live, someone must check and say "Yes, it's ready." Without automation, this means sending emails or messages back and forth, waiting for replies, and manually pausing the process.
This manual way is slow and confusing. People can miss messages, forget to approve, or approve too late. It's easy to make mistakes, and the pipeline can get stuck or delayed, causing frustration and wasted time.
The input step for manual approval in Jenkins pauses the pipeline and waits for a simple button click from the right person. This keeps everything clear, fast, and in one place. No more lost messages or guessing if approval happened.
echo 'Waiting for approval...' # Someone must email or message to approve # Then manually restart pipeline
input message: 'Approve deployment?', ok: 'Yes, deploy now'
It makes pipelines smarter by letting humans easily step in exactly when needed, without breaking the flow.
Before releasing a new app version, the team lead reviews test results and clicks "Approve" in Jenkins to let the deployment continue safely.
Manual approvals slow down and complicate pipelines.
Jenkins input step pauses and waits for a clear human approval.
This keeps automation smooth and controlled with minimal effort.
Practice
input step in a Jenkins pipeline?Solution
Step 1: Understand the role of the input step
Theinputstep is designed to pause the pipeline execution and wait for a user to approve or reject the continuation.Step 2: Compare with other pipeline actions
Other options like deployment, testing, or notifications are handled by different steps, notinput.Final Answer:
To pause the pipeline and wait for manual approval -> Option DQuick Check:
Input step = manual pause [OK]
- Confusing input with automated steps
- Thinking input triggers deployment
- Assuming input sends notifications
Solution
Step 1: Recall Jenkins input step syntax
The correct syntax uses theinputstep with named parameters likemessage: 'text'.Step 2: Check each option
input message: 'Approve deployment?' matches the correct syntax. Options A, B, and D use incorrect formats or braces.Final Answer:
input message: 'Approve deployment?' -> Option AQuick Check:
Correct input syntax uses named parameters [OK]
- Using parentheses instead of named parameters
- Using braces instead of parentheses
- Assigning message with equals sign
input step?
node {
stage('Build') {
echo 'Building...'
}
stage('Approval') {
input message: 'Proceed with deployment?'
}
stage('Deploy') {
echo 'Deploying...'
}
}Solution
Step 1: Analyze the input step behavior
Theinputstep pauses the pipeline and waits for a user to approve before continuing.Step 2: Understand pipeline flow
After approval, the pipeline proceeds to the Deploy stage. Without approval, it stays paused.Final Answer:
Pipeline pauses and waits for user approval before deploying -> Option AQuick Check:
Input step pauses pipeline = Pipeline pauses and waits for user approval before deploying [OK]
- Assuming input step is skipped automatically
- Thinking input causes syntax error
- Believing pipeline runs all stages without pause
pipeline {
agent any
stages {
stage('Test') {
steps {
input message: 'Approve test run?'
echo 'Running tests...'
}
}
}
}Solution
Step 1: Understand declarative pipeline input usage
In declarative pipelines, theinputstep must be wrapped inside ascriptblock to run scripted steps.Step 2: Check the snippet
The input step is directly insidestepswithoutscript, causing a syntax error.Final Answer:
The input step must be inside a script block in declarative pipeline -> Option CQuick Check:
Input in declarative needs script block [OK]
- Placing input step directly in steps without script
- Missing quotes around message
- Thinking input can't be used in certain stages
Solution
Step 1: Understand timeout parameter unit
Thetimeoutparameter forinputis in seconds, so 1 hour = 3600 seconds.Step 2: Check declarative pipeline syntax
Input must be inside ascriptblock in declarative pipelines.Step 3: Evaluate options
script { input message: 'Deploy now?', timeout: 3600 } correctly usesscriptblock and timeout 3600 seconds. script { input message: 'Deploy now?', timeout: 60 } uses 60 (1 minute), B lacks script block, C adds submitter but timeout is 60 seconds.Final Answer:
script { input message: 'Deploy now?', timeout: 3600 } -> Option BQuick Check:
Timeout in seconds + script block = script { input message: 'Deploy now?', timeout: 3600 } [OK]
- Using timeout in minutes instead of seconds
- Omitting script block in declarative pipeline
- Adding unnecessary parameters
Ready to prove it?
Pass the test and this pattern moves unknown
