Bird
Raised Fist0
Jenkinsdevops~10 mins

Post-build actions in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Post-build actions
Build completes
↓
Check post-build actions configured?
No→End
Yes↓
Execute post-build action 1
↓
Execute post-build action 2
↓
All post-build actions done
↓
End
After the build finishes, Jenkins checks if any post-build actions are set and runs them one by one before ending the job.
Execution Sample
Jenkins
pipeline {
  agent any
  stages {
    stage('Build') {
      steps { echo 'Building...' }
    }
  }
  post {
    success { echo 'Build succeeded!' }
    failure { echo 'Build failed!' }
  }
}
This Jenkins pipeline runs a build stage and then runs post-build actions depending on success or failure.
Process Table
StepBuild StatusPost-build Action CheckedAction ExecutedOutput
1Build runningNoNoneBuilding...
2Build succeededYessuccess blockBuild succeeded!
3Post-build actions completeN/AN/AJob ends
💡 All configured post-build actions executed after build success, job ends
Status Tracker
VariableStartAfter BuildAfter Post-buildFinal
buildStatusnullrunningsucceededsucceeded
postBuildActionnonenonesuccess block executedsuccess block executed
Key Moments - 2 Insights
Why does Jenkins run post-build actions only after the build finishes?
Because post-build actions depend on the build result, Jenkins waits until the build completes (see execution_table step 2) before running them.
What happens if no post-build actions are configured?
Jenkins skips post-build steps and ends the job immediately after the build (see concept_flow branch 'No').
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the build status at step 2?
ABuild running
BBuild failed
CBuild succeeded
DBuild not started
💡 Hint
Check the 'Build Status' column at step 2 in the execution_table
At which step does Jenkins execute the post-build success action?
AStep 2
BStep 3
CStep 1
DNo post-build action executed
💡 Hint
Look at the 'Action Executed' column in the execution_table
If the build failed, which post-build action would run instead?
Asuccess block
Bfailure block
Cno action
Dboth success and failure blocks
💡 Hint
Refer to the pipeline code in execution_sample under 'post' section
Concept Snapshot
Post-build actions run after the build finishes.
They depend on build status (success, failure).
Configured in Jenkins pipeline 'post' section.
Executed sequentially before job ends.
If none configured, job ends after build.
Full Transcript
In Jenkins, post-build actions are steps that run after the main build completes. The flow starts with the build running. Once the build finishes, Jenkins checks if any post-build actions are configured. If yes, it executes them one by one depending on the build result, such as running a success message if the build succeeded or a failure message if it failed. If no post-build actions are set, Jenkins ends the job immediately after the build. The example pipeline shows a build stage followed by post-build actions that print messages based on success or failure. The execution table traces the build running, then post-build success action running, then job ending. Variables like buildStatus and postBuildAction change accordingly. Common confusions include why post-build actions wait for build completion and what happens if none are configured. The quiz tests understanding of build status at steps, when post-build actions run, and which actions run on failure. The snapshot summarizes that post-build actions run after build, depend on status, and are configured in the pipeline's post section.

Practice

(1/5)
1. What is the main purpose of Post-build actions in Jenkins?
easy
A. To start the build process
B. To write the build script
C. To perform tasks automatically after the build finishes
D. To configure the Jenkins server settings

Solution

  1. Step 1: Understand Jenkins build phases

    Jenkins runs build steps first, then post-build actions after the build ends.
  2. Step 2: Identify the role of post-build actions

    Post-build actions automate tasks like notifications, archiving, or cleanup after the build completes.
  3. Final Answer:

    To perform tasks automatically after the build finishes -> Option C
  4. Quick Check:

    Post-build actions = tasks after build [OK]
Hint: Post-build actions run after build ends to automate tasks [OK]
Common Mistakes:
  • Confusing post-build actions with build steps
  • Thinking post-build actions start the build
  • Assuming post-build actions configure Jenkins server
2. Which of the following is the correct syntax to add a post-build action in a Jenkins pipeline script?
easy
A. build { post { echo 'Build finished' } }
B. pipeline { postbuild { echo 'Build finished' } }
C. steps { post { echo 'Build finished' } }
D. post { always { echo 'Build finished' } }

Solution

  1. Step 1: Recall Jenkins pipeline post syntax

    In declarative pipelines, post block defines post-build actions with conditions like always.
  2. Step 2: Match syntax options

    post { always { echo 'Build finished' } } uses correct post { always { ... } } syntax. Others use invalid blocks like build or postbuild.
  3. Final Answer:

    post { always { echo 'Build finished' } } -> Option D
  4. Quick Check:

    Post block syntax = post { always { echo 'Build finished' } } [OK]
Hint: Use 'post { always { ... } }' for post-build actions in pipeline [OK]
Common Mistakes:
  • Using 'postbuild' instead of 'post'
  • Placing post block inside 'steps'
  • Using 'build' block incorrectly
3. Given this Jenkins pipeline snippet, what will be printed after the build finishes successfully?
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        echo 'Building...'
      }
    }
  }
  post {
    success {
      echo 'Build succeeded!'
    }
    failure {
      echo 'Build failed!'
    }
  }
}
medium
A. Building... Build failed!
B. Building... Build succeeded!
C. Build succeeded!
D. Build failed!

Solution

  1. Step 1: Analyze build steps

    The pipeline prints 'Building...' during the build stage.
  2. Step 2: Check post-build actions on success

    On successful build, the success block runs, printing 'Build succeeded!'.
  3. Final Answer:

    Building... Build succeeded! -> Option B
  4. Quick Check:

    Success post block runs after build [OK]
Hint: Success block runs only if build succeeds [OK]
Common Mistakes:
  • Confusing failure block with success block
  • Ignoring initial build echo
  • Assuming post block runs before build
4. You wrote this Jenkins pipeline post section but the notification never sends on build failure:
post {
  failure {
    mail(to: 'team@example.com', subject: 'Build Failed')
  }
}
What is the likely problem?
medium
A. The mail step requires proper Jenkins email configuration
B. The failure block should be inside steps
C. The mail step requires a steps block inside failure
D. The post block must be inside steps

Solution

  1. Step 1: Understand the mail step requirements

    The mail step requires the 'Email Extension Plugin' to be installed and SMTP server configured in Manage Jenkins > Configure System > Extended E-mail Notification.
  2. Step 2: Identify the likely problem

    Without proper email configuration (SMTP host, port, credentials, etc.), the notification won't send even if the syntax is correct.
  3. Final Answer:

    The mail step requires proper Jenkins email configuration -> Option A
  4. Quick Check:

    Mail needs SMTP config [OK]
Hint: Configure SMTP in Jenkins for mail step [OK]
Common Mistakes:
  • Not installing Email Extension plugin
  • Not setting SMTP server details
  • Missing 'from' address or credentials
5. You want to archive build artifacts only if the build succeeds and always send a notification email regardless of build result. Which Jenkins pipeline post section correctly implements this?
hard
A. post { success { archiveArtifacts 'build/*.jar' } always { mail(to: 'devs@example.com', subject: 'Build Notification') } }
B. post { always { archiveArtifacts 'build/*.jar' mail(to: 'devs@example.com', subject: 'Build Notification') } }
C. post { success { archiveArtifacts 'build/*.jar' mail(to: 'devs@example.com', subject: 'Build Notification') } }
D. post { failure { archiveArtifacts 'build/*.jar' } always { mail(to: 'devs@example.com', subject: 'Build Notification') } }

Solution

  1. Step 1: Identify conditions for each action

    Archiving should happen only on success, so it goes inside success. Email should always send, so it goes inside always.
  2. Step 2: Match options with conditions

    post { success { archiveArtifacts 'build/*.jar' } always { mail(to: 'devs@example.com', subject: 'Build Notification') } } correctly separates archive in success and mail in always. Others mix conditions incorrectly.
  3. Final Answer:

    post { success { archiveArtifacts 'build/*.jar' } always { mail(to: 'devs@example.com', subject: 'Build Notification') } } -> Option A
  4. Quick Check:

    Use success for archive, always for mail [OK]
Hint: Use 'success' for archive, 'always' for notifications [OK]
Common Mistakes:
  • Putting archive in always block
  • Sending mail only on success
  • Archiving on failure instead of 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