Bird
Raised Fist0
Jenkinsdevops~5 mins

Post-build actions in Jenkins - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Post-build actions
O(n)
Understanding Time Complexity

We want to understand how the time taken by post-build actions changes as the number of actions grows.

How does adding more post-build steps affect the total execution time?

Scenario Under Consideration

Analyze the time complexity of the following Jenkins post-build actions snippet.

post {
  success {
    echo 'Build succeeded'
    archiveArtifacts artifacts: '**/target/*.jar'
  }
  failure {
    mail to: 'team@example.com', subject: 'Build Failed', body: 'Please check the logs.'
  }
}

This snippet runs different actions after the build depending on success or failure.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Executing each post-build action once per build result.
  • How many times: Each action runs exactly once per build, no loops or recursion.
How Execution Grows With Input

Execution time grows linearly as more post-build actions are added.

Input Size (number of post-build actions)Approx. Operations
11 action executed
55 actions executed
1010 actions executed

Pattern observation: Doubling the number of post-build actions roughly doubles the total execution time.

Final Time Complexity

Time Complexity: O(n)

This means the total time grows directly in proportion to the number of post-build actions.

Common Mistake

[X] Wrong: "Post-build actions run all at once, so adding more doesn't affect time much."

[OK] Correct: Each action runs one after another, so more actions add more time overall.

Interview Connect

Understanding how post-build actions scale helps you design efficient Jenkins pipelines that run smoothly as they grow.

Self-Check

What if post-build actions were run in parallel? How would the time complexity change?

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