Bird
Raised Fist0
Jenkinsdevops~10 mins

Deployment pipelines (dev, staging, prod) in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Deployment pipelines (dev, staging, prod)
Start: Code Commit
↓
Build & Test
↓
Deploy to Dev
↓
Manual Approval?
No→Stop Pipeline
Yes↓
Deploy to Staging
↓
Automated Tests on Staging
↓
Manual Approval?
No→Stop Pipeline
Yes↓
Deploy to Production
↓
End
The pipeline starts with code commit, then builds and tests the code, deploys to dev, waits for manual approval to deploy to staging, runs tests, waits for approval again, and finally deploys to production.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Deploy to Dev') {
      steps { echo 'Deploying to Dev' }
    }
  }
}
A simple Jenkins pipeline stage that deploys the code to the development environment.
Process Table
StepActionEnvironmentApproval NeededResult
1Code committedN/ANoPipeline triggered
2Build and testN/ANoBuild successful
3Deploy to DevDevNoDeployment successful
4Manual approval for Staging?N/AYesWaiting for approval
5Approval grantedN/AYesProceed to Staging
6Deploy to StagingStagingNoDeployment successful
7Run automated testsStagingNoTests passed
8Manual approval for Prod?N/AYesWaiting for approval
9Approval grantedN/AYesProceed to Production
10Deploy to ProductionProductionNoDeployment successful
11Pipeline endsN/ANoDeployment complete
💡 Pipeline ends after successful deployment to Production.
Status Tracker
VariableStartAfter Step 3After Step 6After Step 10Final
EnvironmentN/ADevStagingProductionProduction
Approval StatusNoNoYes (granted)Yes (granted)Yes
Deployment StatusNot startedDev deployedStaging deployedProduction deployedCompleted
Key Moments - 3 Insights
Why does the pipeline wait after deploying to Dev?
The pipeline waits for manual approval before deploying to Staging, as shown in step 4 and 5 in the execution table.
What happens if the manual approval is not granted?
The pipeline stops and does not proceed to the next environment, as indicated by the 'Waiting for approval' state in the execution table.
Why are automated tests run after deploying to Staging?
Automated tests verify the deployment in Staging before moving to Production, ensuring stability, as shown in step 7.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step does the pipeline deploy to the Staging environment?
AStep 6
BStep 3
CStep 9
DStep 10
💡 Hint
Check the 'Environment' column for 'Staging' deployment in the execution table.
According to the variable tracker, what is the 'Approval Status' after Step 3?
AYes (granted)
BNo
CWaiting
DNot applicable
💡 Hint
Look at the 'Approval Status' row under 'After Step 3' in the variable tracker.
If the manual approval at Step 8 is denied, what happens to the pipeline?
AIt proceeds to deploy to Production anyway
BIt loops back to Staging deployment
CIt stops and does not deploy to Production
DIt restarts from the beginning
💡 Hint
Refer to the key moment about manual approval and the execution table steps 8 and 9.
Concept Snapshot
Deployment pipelines automate moving code through environments.
Stages: Build & Test -> Dev -> Staging -> Production.
Manual approvals control promotion between stages.
Automated tests run in Staging to ensure quality.
Pipeline stops if approvals are denied.
Jenkins pipelines define these steps clearly.
Full Transcript
This visual execution shows a Jenkins deployment pipeline moving code from development to production. It starts with a code commit triggering build and test. Then the code deploys to the development environment automatically. The pipeline pauses for manual approval before deploying to staging. After deploying to staging, automated tests run to verify stability. Another manual approval is required before deploying to production. If approvals are denied, the pipeline stops. Variables track environment, approval status, and deployment status at each step. This step-by-step flow helps beginners understand how deployment pipelines control safe code promotion.

Practice

(1/5)
1. What is the main purpose of having separate dev, staging, and prod stages in a Jenkins deployment pipeline?
easy
A. To deploy only to production without checks
B. To run the same tests multiple times unnecessarily
C. To test and verify code in different environments before final release
D. To slow down the deployment process

Solution

  1. Step 1: Understand pipeline stages

    Each stage (dev, staging, prod) represents a different environment for testing and validation.
  2. Step 2: Purpose of separate environments

    Separate environments help catch issues early and ensure stability before production deployment.
  3. Final Answer:

    To test and verify code in different environments before final release -> Option C
  4. Quick Check:

    Separate stages = safer deployment [OK]
Hint: Remember: dev, staging, prod = test, verify, release [OK]
Common Mistakes:
  • Thinking all stages do the same thing
  • Assuming staging is optional
  • Believing deployment skips testing
2. Which of the following is the correct syntax to define a stage named "Staging" in a Jenkins declarative pipeline?
easy
A. stage 'Staging' steps { echo 'Deploying to staging' }
B. stage: Staging { steps: { echo 'Deploying to staging' } }
C. stage { name: 'Staging' steps { echo 'Deploying to staging' } }
D. stage('Staging') { steps { echo 'Deploying to staging' } }

Solution

  1. Step 1: Recall Jenkins declarative syntax

    Stages are defined with stage('Name') { steps { ... } } blocks.
  2. Step 2: Check each option

    stage('Staging') { steps { echo 'Deploying to staging' } } matches correct syntax; others have invalid syntax or missing braces.
  3. Final Answer:

    stage('Staging') { steps { echo 'Deploying to staging' } } -> Option D
  4. Quick Check:

    Correct stage syntax = stage('Staging') { steps { echo 'Deploying to staging' } } [OK]
Hint: Use parentheses and braces exactly as in official docs [OK]
Common Mistakes:
  • Missing braces or parentheses
  • Using colons instead of braces
  • Incorrect keyword order
3. Given this Jenkins pipeline snippet, what will be the output if the staging stage fails?
pipeline {
  agent any
  stages {
    stage('Dev') {
      steps { echo 'Deploying to dev' }
    }
    stage('Staging') {
      steps { error 'Staging deployment failed' }
    }
    stage('Prod') {
      steps { echo 'Deploying to prod' }
    }
  }
}
medium
A. Deploying to dev\nError: Staging deployment failed\nProd stage skipped
B. Deploying to dev\nError: Staging deployment failed\nProd stage runs
C. Only Prod stage runs
D. Pipeline completes successfully without errors

Solution

  1. Step 1: Understand pipeline flow

    Pipeline runs stages in order: Dev, Staging, Prod.
  2. Step 2: Effect of error in Staging stage

    Error in Staging stops pipeline; Prod stage does not run.
  3. Final Answer:

    Deploying to dev\nError: Staging deployment failed\nProd stage skipped -> Option A
  4. Quick Check:

    Error in stage stops later stages [OK]
Hint: Error in a stage stops pipeline unless handled [OK]
Common Mistakes:
  • Assuming Prod runs after Staging error
  • Ignoring error messages
  • Thinking pipeline completes despite errors
4. You have this Jenkins pipeline snippet:
pipeline {
  agent any
  stages {
    stage('Dev') {
      steps { echo 'Deploying to dev' }
    }
    stage('Staging') {
      steps { sh 'deploy.sh' }
    }
    stage('Prod') {
      steps { echo 'Deploying to prod' }
    }
  }
}

The deploy.sh script is missing execute permission. What will happen when the pipeline runs the Staging stage?
medium
A. The Staging stage will succeed without running the script
B. The Staging stage will fail with a permission denied error
C. The pipeline will skip the Staging stage and continue to Prod
D. The pipeline will automatically fix permissions and run the script

Solution

  1. Step 1: Understand shell script execution in Jenkins

    Jenkins runs shell commands as is; missing execute permission causes failure.
  2. Step 2: Effect of missing execute permission

    Shell returns 'permission denied' error; stage fails and pipeline stops.
  3. Final Answer:

    The Staging stage will fail with a permission denied error -> Option B
  4. Quick Check:

    Missing execute permission = stage failure [OK]
Hint: Scripts must be executable before Jenkins runs them [OK]
Common Mistakes:
  • Assuming Jenkins fixes permissions automatically
  • Thinking stage will skip on error
  • Believing script runs without execute permission
5. You want to create a Jenkins pipeline that deploys to dev automatically, but requires manual approval before deploying to staging and prod. Which pipeline snippet correctly implements this?
hard
A. pipeline { agent any stages { stage('Dev') { steps { echo 'Deploying to dev' } } stage('Staging') { steps { input 'Approve Staging?' echo 'Deploying to staging' } } stage('Prod') { steps { input 'Approve Prod?' echo 'Deploying to prod' } } } }
B. pipeline { agent any stages { stage('Dev') { steps { echo 'Deploying to dev' } } stage('Staging') { steps { echo 'Deploying to staging' } } stage('Prod') { steps { echo 'Deploying to prod' } } } }
C. pipeline { agent any stages { stage('Dev') { steps { input 'Approve Dev?' echo 'Deploying to dev' } } stage('Staging') { steps { echo 'Deploying to staging' } } stage('Prod') { steps { echo 'Deploying to prod' } } } }
D. pipeline { agent any stages { stage('Dev') { steps { echo 'Deploying to dev' } } stage('Staging') { steps { input 'Approve Prod?' echo 'Deploying to staging' } } stage('Prod') { steps { input 'Approve Staging?' echo 'Deploying to prod' } } } }

Solution

  1. Step 1: Identify manual approval usage

    Jenkins input step pauses pipeline for manual approval.
  2. Step 2: Check stages with input

    pipeline { agent any stages { stage('Dev') { steps { echo 'Deploying to dev' } } stage('Staging') { steps { input 'Approve Staging?' echo 'Deploying to staging' } } stage('Prod') { steps { input 'Approve Prod?' echo 'Deploying to prod' } } } } uses input before staging and prod deployments, dev runs automatically.
  3. Final Answer:

    Pipeline with input steps before staging and prod deployments -> Option A
  4. Quick Check:

    Manual approval = input step before stage [OK]
Hint: Use input step to pause for approval in Jenkins [OK]
Common Mistakes:
  • Adding input to dev instead of staging/prod
  • Skipping input steps entirely
  • Mixing approval prompts between stages
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard