Bird
Raised Fist0
Jenkinsdevops~10 mins

Integration test stages in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Integration test stages
Start Pipeline
↓
Checkout Code
↓
Build Application
↓
Run Unit Tests
↓
Run Integration Tests
↓
Publish Test Results
↓
Deploy or Notify
↓
End
This flow shows the main stages of a Jenkins pipeline running integration tests after building and unit testing the application.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Integration Test') {
      steps {
        sh 'run-integration-tests.sh'
      }
    }
  }
}
This Jenkins pipeline stage runs integration tests by executing a shell script.
Process Table
StepStageActionResultNext Step
1Start PipelineInitialize Jenkins jobJob startedCheckout Code
2Checkout CodePull code from repositoryCode available locallyBuild Application
3Build ApplicationCompile and package appBuild successfulRun Unit Tests
4Run Unit TestsExecute unit testsAll unit tests passedRun Integration Tests
5Run Integration TestsExecute integration tests scriptIntegration tests passedPublish Test Results
6Publish Test ResultsArchive and display test reportsReports publishedDeploy or Notify
7Deploy or NotifyDeploy app or send notificationsDeployment done or notifiedEnd
8EndPipeline finishedSuccessNone
💡 Pipeline ends after deployment or notification stage completes successfully.
Status Tracker
VariableStartAfter 1After 2After 3After 4After 5After 6Final
pipeline_statusNot startedStartedCode checked outBuiltUnit tests passedIntegration tests passedResults publishedDeployed/Notified
integration_test_resultNot runNot runNot runNot runNot runPassedPassedPassed
Key Moments - 2 Insights
Why do integration tests run after unit tests and not before?
Integration tests depend on the application being built and unit tests passing first, as shown in execution_table rows 4 and 5 where unit tests pass before integration tests run.
What happens if integration tests fail during the pipeline?
If integration tests fail, the pipeline stops before publishing results or deployment, preventing broken code from progressing, as implied by the flow stopping after step 5 if tests fail.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the pipeline_status after step 4?
ABuilt
BIntegration tests passed
CUnit tests passed
DCode checked out
💡 Hint
Check variable_tracker row for pipeline_status at After 4 column.
At which step does the integration test script run?
AStep 3
BStep 5
CStep 4
DStep 6
💡 Hint
Look at execution_table Stage and Action columns for running integration tests.
If integration tests fail, what is the likely next step in the pipeline?
APipeline stops
BDeploy or Notify
CPublish Test Results
DRun Unit Tests again
💡 Hint
Refer to key_moments explanation about pipeline stopping on test failure.
Concept Snapshot
Jenkins pipeline stages for integration tests:
- Checkout code
- Build application
- Run unit tests
- Run integration tests
- Publish results
- Deploy or notify
Integration tests run after unit tests and build succeed.
Full Transcript
This visual execution shows a Jenkins pipeline running integration tests. The pipeline starts by checking out code, building the app, and running unit tests. If unit tests pass, it runs integration tests by executing a shell script. After integration tests pass, it publishes test results and then deploys the app or sends notifications. Variables like pipeline_status and integration_test_result update at each stage. If integration tests fail, the pipeline stops to prevent faulty code from deploying.

Practice

(1/5)
1. What is the main purpose of an integration test stage in a Jenkins pipeline?
easy
A. To check if different parts of the software work together correctly
B. To deploy the software to production
C. To compile the source code
D. To clean up temporary files after deployment

Solution

  1. Step 1: Understand the role of integration tests

    Integration tests verify that different modules or components of software interact correctly.
  2. Step 2: Identify the stage purpose in Jenkins

    In Jenkins pipelines, integration test stages run after building the code but before deployment to ensure combined parts work well.
  3. Final Answer:

    To check if different parts of the software work together correctly -> Option A
  4. Quick Check:

    Integration test purpose = verify combined parts work [OK]
Hint: Integration tests check combined parts, not deployment or build [OK]
Common Mistakes:
  • Confusing integration tests with deployment steps
  • Thinking integration tests compile code
  • Assuming integration tests clean files
2. Which of the following is the correct syntax to define an integration test stage in a Jenkins declarative pipeline?
easy
A. stage: 'Integration Test' steps: sh 'run-tests.sh'
B. integrationTest { steps { sh 'run-tests.sh' } }
C. stage('Integration Test') { steps { sh 'run-tests.sh' } }
D. testStage('Integration Test') { shell 'run-tests.sh' }

Solution

  1. Step 1: Recall Jenkins declarative pipeline stage syntax

    The correct syntax uses stage('Name') { steps { ... } } to define stages.
  2. Step 2: Match the options to syntax

    stage('Integration Test') { steps { sh 'run-tests.sh' } } matches the correct syntax with stage('Integration Test') { steps { sh 'run-tests.sh' } }.
  3. Final Answer:

    stage('Integration Test') { steps { sh 'run-tests.sh' } } -> Option C
  4. Quick Check:

    Jenkins stage syntax = stage('name') { steps { ... } } [OK]
Hint: Jenkins stages use stage('name') { steps { ... } } syntax [OK]
Common Mistakes:
  • Using incorrect keywords like integrationTest or testStage
  • Missing curly braces or wrong colon usage
  • Using shell instead of sh for shell commands
3. Given this Jenkins pipeline snippet, what will be the output if the integration tests fail?
pipeline {
  agent any
  stages {
    stage('Build') {
      steps { echo 'Building...' }
    }
    stage('Integration Test') {
      steps { sh 'exit 1' }
    }
    stage('Deploy') {
      steps { echo 'Deploying...' }
    }
  }
}
medium
A. The pipeline retries Integration Test automatically
B. The pipeline continues to Deploy stage despite failure
C. The pipeline skips Build and runs Deploy only
D. The pipeline stops after the Integration Test stage with failure

Solution

  1. Step 1: Understand shell command exit codes in Jenkins

    The command sh 'exit 1' simulates a failure because exit code 1 means error.
  2. Step 2: Jenkins pipeline behavior on failure

    By default, Jenkins stops the pipeline on any stage failure and does not proceed to next stages.
  3. Final Answer:

    The pipeline stops after the Integration Test stage with failure -> Option D
  4. Quick Check:

    Failure exit code stops pipeline [OK]
Hint: Exit code 1 in sh step causes pipeline failure and stop [OK]
Common Mistakes:
  • Assuming pipeline continues after failure
  • Thinking Jenkins retries failed stages automatically
  • Confusing exit 0 (success) with exit 1 (failure)
4. You wrote this Jenkins pipeline stage for integration tests:
stage('Integration Test') {
  steps {
    sh 'run-integration-tests.sh'
  }
}
But the pipeline fails with a syntax error. What is the likely cause?
medium
A. Missing steps block inside the stage
B. The pipeline is missing the pipeline block wrapper
C. Incorrect indentation of the sh command
D. The stage keyword is misspelled

Solution

  1. Step 1: Check Jenkins declarative pipeline structure

    Every declarative pipeline must start with a pipeline { ... } block wrapping all stages.
  2. Step 2: Identify missing pipeline block

    The snippet shows only a stage block without the required pipeline wrapper, causing syntax error.
  3. Final Answer:

    The pipeline is missing the pipeline block wrapper -> Option B
  4. Quick Check:

    Declarative pipelines need pipeline { stages { ... } } [OK]
Hint: Always wrap stages inside pipeline { } block [OK]
Common Mistakes:
  • Assuming indentation causes syntax error
  • Forgetting the pipeline block wrapper
  • Misspelling stage keyword (not shown here)
5. You want to add an integration test stage that runs only if the build stage succeeds and skips deployment if tests fail. Which Jenkins pipeline snippet correctly implements this logic?
medium
A. stage('Integration Test') { steps { sh 'run-tests.sh' } } stage('Deploy') { steps { sh 'deploy.sh' } }
B. stage('Integration Test') { steps { sh 'run-tests.sh' } post { failure { error 'Tests failed, stop pipeline' } } } stage('Deploy') { steps { sh 'deploy.sh' } }
C. stage('Integration Test') { steps { sh 'run-tests.sh || true' } } stage('Deploy') { steps { sh 'deploy.sh' } }
D. stage('Integration Test') { steps { sh 'run-tests.sh' } } stage('Deploy') { when { expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' } } steps { sh 'deploy.sh' } }

Solution

  1. Step 1: Ensure integration tests run after build and affect deployment

    The integration test stage runs normally after build; deployment should only happen if tests pass.
  2. Step 2: Identify the correct sequential stage implementation

    In Jenkins pipelines, stages run sequentially by default. A failure in 'Integration Test' (non-zero exit from sh) causes the pipeline to fail and skip the 'Deploy' stage. stage('Integration Test') { steps { sh 'run-tests.sh' } } stage('Deploy') { steps { sh 'deploy.sh' } } correctly implements this logic.
  3. Final Answer:

    stage('Integration Test') { steps { sh 'run-tests.sh' } } stage('Deploy') { steps { sh 'deploy.sh' } } -> Option A
  4. Quick Check:

    Sequential stage failure skips subsequent stages [OK]
Hint: Default sequential execution stops pipeline on test failure, skipping deploy [OK]
Common Mistakes:
  • Ignoring test failure and always deploying
  • Using post failure to stop pipeline but not gating deploy
  • Forcing tests to pass with || true, hiding failures
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