Bird
Raised Fist0
Jenkinsdevops~20 mins

Hybrid CI/CD approaches in Jenkins - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Hybrid CI/CD Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Hybrid CI/CD Pipelines

In a hybrid CI/CD approach, which of the following best describes the main advantage?

AIt combines on-premises and cloud resources to optimize build and deployment speed.
BIt uses only cloud resources to reduce costs and complexity.
CIt requires manual intervention at every stage to ensure quality.
DIt eliminates the need for version control systems.
Attempts:
2 left
💡 Hint

Think about how hybrid approaches balance different environments.

💻 Command Output
intermediate
2:00remaining
Jenkins Pipeline Output with Hybrid Agents

Given this Jenkinsfile snippet using hybrid agents:

pipeline {
  agent none
  stages {
    stage('Build') {
      agent { label 'on-prem-agent' }
      steps {
        echo 'Building on on-premises agent'
      }
    }
    stage('Deploy') {
      agent { label 'cloud-agent' }
      steps {
        echo 'Deploying on cloud agent'
      }
    }
  }
}

What will be the console output when this pipeline runs?

Jenkins
pipeline {
  agent none
  stages {
    stage('Build') {
      agent { label 'on-prem-agent' }
      steps {
        echo 'Building on on-premises agent'
      }
    }
    stage('Deploy') {
      agent { label 'cloud-agent' }
      steps {
        echo 'Deploying on cloud agent'
      }
    }
  }
}
AError: Agent label 'on-prem-agent' not found
B[Pipeline] stage\n[Pipeline] { (Build)\nDeploying on cloud agent\n[Pipeline] }\n[Pipeline] stage\n[Pipeline] { (Deploy)\nBuilding on on-premises agent\n[Pipeline] }
C[Pipeline] stage\n[Pipeline] { (Build)\nBuilding on on-premises agent\n[Pipeline] }\n[Pipeline] stage\n[Pipeline] { (Deploy)\nDeploying on cloud agent\n[Pipeline] }
DError: Agent label 'cloud-agent' not found
Attempts:
2 left
💡 Hint

Each stage uses its own agent label to run steps.

❓ Configuration
advanced
2:30remaining
Configuring Jenkins for Hybrid CI/CD

Which Jenkins configuration snippet correctly sets up a hybrid pipeline that uses a Docker container on a cloud agent for testing and an on-premises agent for building?

A
pipeline {
  agent none
  stages {
    stage('Build') {
      agent { docker { image 'python:3.12' label 'on-prem-agent' } }
      steps {
        sh 'make build'
      }
    }
    stage('Test') {
      agent { label 'cloud-agent' }
      steps {
        sh 'pytest'
      }
    }
  }
}
B
pipeline {
  agent none
  stages {
    stage('Build') {
      agent { label 'on-prem-agent' }
      steps {
        sh 'make build'
      }
    }
    stage('Test') {
      agent {
        docker {
          image 'python:3.12'
          label 'cloud-agent'
        }
      }
      steps {
        sh 'pytest'
      }
    }
  }
}
C
pipeline {
  agent { label 'cloud-agent' }
  stages {
    stage('Build') {
      steps {
        sh 'make build'
      }
    }
    stage('Test') {
      agent { docker { image 'python:3.12' } }
      steps {
        sh 'pytest'
      }
    }
  }
}
D
pipeline {
  agent {
    docker {
      image 'python:3.12'
      label 'on-prem-agent'
    }
  }
  stages {
    stage('Build') {
      steps {
        sh 'make build'
      }
    }
    stage('Test') {
      agent { label 'cloud-agent' }
      steps {
        sh 'pytest'
      }
    }
  }
}
Attempts:
2 left
💡 Hint

Remember that Docker agent inside a stage requires both image and label separately.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting Hybrid Pipeline Agent Errors

A Jenkins hybrid pipeline fails with the error: java.lang.IllegalArgumentException: No agent found with label 'cloud-agent'. What is the most likely cause?

AThe label 'cloud-agent' is not assigned to any active Jenkins agent node.
BThe Jenkins master node is offline, causing all agents to be unreachable.
CThe pipeline syntax is incorrect and missing the 'agent' block entirely.
DThe Docker image specified for the cloud agent is invalid or missing.
Attempts:
2 left
💡 Hint

Check the agent labels configured in Jenkins nodes.

🔀 Workflow
expert
3:00remaining
Hybrid CI/CD Workflow Optimization

You have a hybrid CI/CD setup where builds run on-premises and deployments run in the cloud. Which workflow change will best reduce deployment downtime during updates?

AUse manual approval steps before deployment to ensure no errors occur.
BMove all builds and deployments to the on-premises environment to reduce network latency.
CRun builds and deployments simultaneously on both on-premises and cloud agents.
DImplement blue-green deployment in the cloud environment while keeping builds on-premises.
Attempts:
2 left
💡 Hint

Think about deployment strategies that minimize downtime.

Practice

(1/5)
1. What is the main purpose of using a hybrid CI/CD approach in Jenkins pipelines?
easy
A. To combine automatic and manual steps for safer deployments
B. To run only manual deployment steps without automation
C. To automate all steps without any manual intervention
D. To disable pipeline triggers and run jobs manually

Solution

  1. Step 1: Understand hybrid CI/CD concept

    Hybrid CI/CD mixes automatic and manual steps to balance speed and control.
  2. Step 2: Identify Jenkins pipeline usage

    Jenkins pipelines use the input step to pause for manual approval, enabling safer deployments.
  3. Final Answer:

    To combine automatic and manual steps for safer deployments -> Option A
  4. Quick Check:

    Hybrid CI/CD = mix auto + manual [OK]
Hint: Hybrid means mixing auto and manual steps [OK]
Common Mistakes:
  • Thinking hybrid means fully manual
  • Assuming hybrid means fully automated
  • Confusing hybrid with disabling triggers
2. Which Jenkins pipeline syntax correctly adds a manual approval step?
easy
A. manualApproval('Approve deployment?')
B. input message: 'Approve deployment?'
C. pause('Approve deployment?')
D. waitForInput('Approve deployment?')

Solution

  1. Step 1: Recall Jenkins input step syntax

    The input step pauses the pipeline and asks for manual approval with a message.
  2. Step 2: Match syntax to options

    Only input message: 'Approve deployment?' is valid Jenkins pipeline syntax for manual input.
  3. Final Answer:

    input message: 'Approve deployment?' -> Option B
  4. Quick Check:

    Jenkins manual step = input message [OK]
Hint: Use 'input message:' for manual approval in Jenkins [OK]
Common Mistakes:
  • Using non-existent commands like manualApproval
  • Confusing input with pause or waitForInput
  • Missing the 'message:' keyword
3. Given this Jenkins pipeline snippet, what happens when it runs?
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        echo 'Building...'
      }
    }
    stage('Deploy') {
      steps {
        input message: 'Approve deployment?'
        echo 'Deploying...'
      }
    }
  }
}
medium
A. Pipeline fails because input step is invalid
B. Build and deploy run automatically without pause
C. Deploy runs first, then build runs after approval
D. Build runs, then pipeline waits for manual approval before deploying

Solution

  1. Step 1: Analyze pipeline stages order

    Stages run in order: 'Build' first, then 'Deploy'.
  2. Step 2: Understand input step effect

    The input step pauses the pipeline and waits for manual approval before continuing to echo 'Deploying...'.
  3. Final Answer:

    Build runs, then pipeline waits for manual approval before deploying -> Option D
  4. Quick Check:

    input pauses pipeline for approval [OK]
Hint: Input pauses pipeline until manual approval [OK]
Common Mistakes:
  • Assuming deploy runs automatically without pause
  • Thinking input step causes failure
  • Confusing stage order
4. You added this input step in your Jenkins pipeline but it never pauses for approval:
input 'Approve deployment?'

What is the likely problem?
medium
A. The input step requires a named parameter like message: to work
B. The input step must be inside a script block
C. The input step only works in declarative pipelines
D. The input step needs a timeout parameter

Solution

  1. Step 1: Check input step syntax

    The input step requires named parameters like message: 'text' for proper execution.
  2. Step 2: Identify missing named parameter

    Using just a string without message: causes Jenkins to ignore the input step and not pause.
  3. Final Answer:

    The input step requires a named parameter like message: to work -> Option A
  4. Quick Check:

    Input needs message: parameter [OK]
Hint: Always use 'message:' with input step [OK]
Common Mistakes:
  • Omitting message: parameter
  • Thinking input must be in script block
  • Assuming timeout is mandatory
5. You want a Jenkins pipeline that builds automatically, then waits for manual approval, and finally deploys only if approved within 10 minutes. Which snippet correctly implements this hybrid CI/CD approach?
hard
A. timeout(time: 10, unit: MINUTES) { input message: 'Approve deployment?' } echo 'Deploying...'
B. input message: 'Approve deployment?', timeout: 10, unit: 'MINUTES' if (currentBuild.result != 'ABORTED') { echo 'Deploying...' }
C. timeout(time: 10, unit: 'MINUTES') { input message: 'Approve deployment?' echo 'Deploying...' }
D. input message: 'Approve deployment?', timeout: 10, unit: 'MINUTES' echo 'Deploying...'

Solution

  1. Step 1: Understand timeout with input step

    To limit approval wait time, wrap input and deployment steps inside a timeout block.
  2. Step 2: Check which option wraps input and deploy inside timeout

    timeout(time: 10, unit: 'MINUTES') { input message: 'Approve deployment?' echo 'Deploying...' } wraps both input and echo 'Deploying...' inside timeout, ensuring deploy runs only if approved within 10 minutes.
  3. Final Answer:

    timeout(time: 10, unit: 'MINUTES') { input message: 'Approve deployment?' echo 'Deploying...' } -> Option C
  4. Quick Check:

    Timeout wraps input and deploy steps [OK]
Hint: Wrap input and deploy in timeout block [OK]
Common Mistakes:
  • Not wrapping deploy inside timeout
  • Checking build result incorrectly
  • Using timeout only around input without deploy
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