Bird
Raised Fist0
Jenkinsdevops~10 mins

Build, test, deploy stages concept in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Build, test, deploy stages concept
Start Pipeline
↓
Build Stage
↓
Test Stage
↓
Deploy Stage
↓
Pipeline Complete
The pipeline runs in order: first building the code, then testing it, and finally deploying it if tests pass.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Build') { steps { echo 'Building...' } }
    stage('Test') { steps { echo 'Testing...' } }
    stage('Deploy') { steps { echo 'Deploying...' } }
  }
}
This Jenkins pipeline runs three stages: Build, Test, and Deploy, printing messages at each step.
Process Table
StepStageActionOutputNext Step
1BuildStart Build stageBuilding...Go to Test stage
2TestStart Test stageTesting...Go to Deploy stage
3DeployStart Deploy stageDeploying...Pipeline Complete
4EndPipeline finishedAll stages completed successfullyStop
💡 Pipeline stops after Deploy stage completes successfully.
Status Tracker
VariableStartAfter BuildAfter TestAfter Deploy
stageStatusnonebuild completetest completedeploy complete
Key Moments - 2 Insights
Why does the pipeline stop if the Test stage fails?
Because Jenkins runs stages sequentially and stops the pipeline on failure to avoid deploying broken code, as shown by the absence of Deploy stage execution in the table if Test fails.
Can Deploy run before Test finishes?
No, stages run one after another. Deploy only starts after Test completes successfully, as seen in the execution_table step order.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output at Step 2?
ATesting...
BBuilding...
CDeploying...
DPipeline finished
💡 Hint
Check the 'Output' column for Step 2 in the execution_table.
At which step does the pipeline complete all stages?
AStep 3
BStep 2
CStep 4
DStep 1
💡 Hint
Look at the 'Next Step' column and find where it says 'Stop'.
If the Test stage fails, what happens to the Deploy stage?
AIt runs anyway
BIt is skipped
CIt runs before Test
DIt runs twice
💡 Hint
Refer to the key_moments section explaining pipeline stop on failure.
Concept Snapshot
Jenkins pipeline runs stages in order: Build -> Test -> Deploy.
Each stage must succeed for the next to run.
If a stage fails, pipeline stops to prevent errors.
Stages print messages to show progress.
This ensures safe, step-by-step delivery of code.
Full Transcript
This Jenkins pipeline example shows three main stages: Build, Test, and Deploy. The pipeline starts by running the Build stage, which compiles or prepares the code. Next, it runs the Test stage to check if the code works correctly. If tests pass, the Deploy stage runs to release the code to users. The execution table traces each step, showing the output messages and the order of stages. Variables track the status after each stage. Key moments clarify that the pipeline stops if tests fail, preventing deployment of broken code. The visual quiz checks understanding of outputs and stage order. This stepwise flow helps beginners see how Jenkins pipelines automate safe software delivery.

Practice

(1/5)
1. What is the main purpose of splitting a Jenkins pipeline into build, test, and deploy stages?
easy
A. To organize the process into clear steps and catch errors early
B. To run all commands at the same time for speed
C. To skip testing and deploy directly
D. To only build the code without testing or deploying

Solution

  1. Step 1: Understand the purpose of stages

    Stages separate the pipeline into logical parts: building, testing, and deploying.
  2. Step 2: Recognize benefits of stages

    This separation helps find errors early and keeps the process organized.
  3. Final Answer:

    To organize the process into clear steps and catch errors early -> Option A
  4. Quick Check:

    Stages = clear steps + early error detection [OK]
Hint: Stages split work to catch errors early and stay organized [OK]
Common Mistakes:
  • Thinking stages run in parallel by default
  • Skipping test stage to save time
  • Confusing build with deploy
2. Which of the following is the correct syntax to define a build stage in a Jenkins declarative pipeline?
easy
A. stage('build') { steps { sh 'make build' } }
B. build { stage('steps') { sh 'make build' } }
C. steps { stage('build') { sh 'make build' } }
D. pipeline { build { sh 'make build' } }

Solution

  1. Step 1: Recall Jenkins declarative syntax

    A stage is defined as stage('name') { steps { ... } }.
  2. Step 2: Match syntax with options

    stage('build') { steps { sh 'make build' } } correctly uses stage('build') { steps { sh 'make build' } }.
  3. Final Answer:

    stage('build') { steps { sh 'make build' } } -> Option A
  4. Quick Check:

    Stage syntax = stage('name') + steps block [OK]
Hint: Stage syntax: stage('name') { steps { ... } } [OK]
Common Mistakes:
  • Placing steps outside stage block
  • Using build as a block instead of stage
  • Missing steps keyword
3. Given this Jenkins pipeline snippet:
pipeline {
  agent any
  stages {
    stage('build') {
      steps {
        echo 'Building...'
      }
    }
    stage('test') {
      steps {
        error 'Test failed!'
      }
    }
    stage('deploy') {
      steps {
        echo 'Deploying...'
      }
    }
  }
}

What will be the output when this pipeline runs?
medium
A. Pipeline skips build and test, runs deploy only
B. All stages run successfully including deploy
C. Build stage runs, then test stage fails and stops pipeline; deploy does not run
D. Pipeline runs build and deploy but skips test

Solution

  1. Step 1: Analyze build stage

    The build stage prints 'Building...' successfully.
  2. Step 2: Analyze test stage

    The test stage runs error 'Test failed!' which stops the pipeline with failure.
  3. Step 3: Analyze deploy stage

    Because test failed, deploy stage does not run.
  4. Final Answer:

    Build stage runs, then test stage fails and stops pipeline; deploy does not run -> Option C
  5. Quick Check:

    Failure in test stops pipeline before deploy [OK]
Hint: Error in test stage stops pipeline before deploy [OK]
Common Mistakes:
  • Assuming deploy runs despite test failure
  • Thinking error only logs message without stopping
  • Ignoring pipeline stop on error
4. You wrote this Jenkins pipeline snippet:
pipeline {
  agent any
  stages {
    stage('build') {
      steps {
        sh 'make build'
      }
    }
    stage('test') {
      sh 'make test'
    }
    stage('deploy') {
      steps {
        sh 'make deploy'
      }
    }
  }
}

Why does this pipeline fail to run correctly?
medium
A. The build stage uses sh instead of bat
B. The test stage is missing the steps block
C. The deploy stage should be outside stages
D. The agent keyword is misplaced

Solution

  1. Step 1: Check syntax of each stage

    Build and deploy stages have steps { ... } blocks, but test stage does not.
  2. Step 2: Understand Jenkins syntax rules

    Each stage must have a steps block to run commands; missing it causes failure.
  3. Final Answer:

    The test stage is missing the steps block -> Option B
  4. Quick Check:

    Missing steps block in stage = syntax error [OK]
Hint: Every stage needs a steps block for commands [OK]
Common Mistakes:
  • Forgetting steps block inside a stage
  • Mixing shell commands syntax
  • Misplacing agent keyword
5. You want to create a Jenkins pipeline that builds your app, runs tests, and deploys only if tests pass. Which pipeline structure below correctly implements this with proper stages and error handling?
hard
A. pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } }
B. pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } post { failure { echo 'Tests failed, skipping deploy' } } }
C. pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } post { always { echo 'Deploying regardless of test result' } } }
D. pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } post { success { echo 'Deployment complete' } } }

Solution

  1. Step 1: Understand pipeline flow

    Build runs first, then test, then deploy only if test passes (pipeline success).
  2. Step 2: Analyze post blocks

    pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } post { success { echo 'Deployment complete' } } } uses post { success { ... } } to confirm deployment success message, matching requirement.
  3. Step 3: Check other options

    pipeline { agent any stages { stage('build') { steps { sh 'build.sh' } } stage('test') { steps { sh 'test.sh' } } stage('deploy') { steps { sh 'deploy.sh' } } } } lacks error handling; B prints message on failure but does not prevent deploy; C deploys always.
  4. Final Answer:

    Option D correctly runs deploy only on success and confirms deployment -> Option D
  5. Quick Check:

    Deploy runs only if tests pass = post success block [OK]
Hint: Use post success block to run deploy only if tests pass [OK]
Common Mistakes:
  • Deploy running even if tests fail
  • Missing post blocks for error handling
  • Confusing post always with success
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