Bird
Raised Fist0
Jenkinsdevops~5 mins

Parameters block declaration in Jenkins - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you want to run a Jenkins job but change some values each time, like which branch to build or what version to deploy. The parameters block lets you ask for these values before the job starts.
When you want to choose which branch of your code to build each time you run the job
When you need to specify a version number or tag for deployment dynamically
When you want to toggle features on or off during a build without changing the code
When you want to input a custom message or label for the build
When you want to select options from a list before starting the job
Config File - Jenkinsfile
Jenkinsfile
pipeline {
  agent any
  parameters {
    string(name: 'BRANCH_NAME', defaultValue: 'main', description: 'Branch to build')
    booleanParam(name: 'RUN_TESTS', defaultValue: true, description: 'Run unit tests')
    choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'production'], description: 'Select deployment environment')
  }
  stages {
    stage('Build') {
      steps {
        echo "Building branch: ${params.BRANCH_NAME}"
      }
    }
    stage('Test') {
      when {
        expression { return params.RUN_TESTS }
      }
      steps {
        echo 'Running tests...'
      }
    }
    stage('Deploy') {
      steps {
        echo "Deploying to environment: ${params.DEPLOY_ENV}"
      }
    }
  }
}

This Jenkinsfile defines a parameters block inside the pipeline. It declares three parameters:

  • string: lets the user enter text, here for the branch name with a default of 'main'.
  • booleanParam: a checkbox to decide if tests should run, default true.
  • choice: a dropdown list to pick the deployment environment.

These parameters can be accessed in the pipeline using params.PARAMETER_NAME.

Commands
This command updates the Jenkins job with the new Jenkinsfile that includes the parameters block. It makes Jenkins aware of the parameters to ask before running the job.
Terminal
jenkins-jobs --conf jenkins.ini update Jenkinsfile
Expected OutputExpected
Job updated successfully: Jenkinsfile
This command starts the Jenkins pipeline named 'my-pipeline' and passes values for the parameters declared in the Jenkinsfile. It overrides the defaults with specific values for this run.
Terminal
jenkins build my-pipeline -p BRANCH_NAME=feature-xyz -p RUN_TESTS=false -p DEPLOY_ENV=staging
Expected OutputExpected
[Pipeline] Start of Pipeline [Pipeline] echo Building branch: feature-xyz [Pipeline] script [Pipeline] echo Running tests... [Pipeline] echo Deploying to environment: staging [Pipeline] End of Pipeline
→
-p - Pass a parameter value to the Jenkins job
This command runs the Jenkins pipeline without passing parameters, so it uses the default values defined in the parameters block.
Terminal
jenkins build my-pipeline
Expected OutputExpected
[Pipeline] Start of Pipeline [Pipeline] echo Building branch: main [Pipeline] script [Pipeline] echo Running tests... [Pipeline] echo Deploying to environment: dev [Pipeline] End of Pipeline
Key Concept

If you remember nothing else from this pattern, remember: the parameters block lets you ask for input values before the Jenkins job runs, making your builds flexible and reusable.

Common Mistakes
Forgetting to use 'params.' prefix when accessing parameter values inside the pipeline
Jenkins won't recognize the parameter and will cause errors or empty values
Always use 'params.PARAMETER_NAME' to access the parameter values in your pipeline script
Not defining default values for parameters
If you run the job without passing parameters, Jenkins will fail or ask for input every time
Always provide sensible default values in the parameters block to allow smooth runs
Passing parameters with wrong names or types when triggering the job
Jenkins will ignore or error out because the parameter does not exist or is invalid
Use exact parameter names and correct types as declared in the Jenkinsfile when triggering builds
Summary
The parameters block in Jenkinsfile declares inputs users can provide before running a job.
You can define string, boolean, choice, and other parameter types with default values and descriptions.
Access parameters inside the pipeline using 'params.PARAMETER_NAME' to customize build behavior.

Practice

(1/5)
1. What is the purpose of the parameters block in a Jenkins pipeline?
easy
A. To define inputs that users can provide before the job runs
B. To specify the stages of the pipeline
C. To set environment variables for the pipeline
D. To declare the agent where the pipeline runs

Solution

  1. Step 1: Understand the role of the parameters block

    The parameters block is used to ask users for input before the pipeline starts.
  2. Step 2: Compare with other pipeline blocks

    Other blocks like stages define pipeline steps, environment sets variables, and agent defines the execution node.
  3. Final Answer:

    To define inputs that users can provide before the job runs -> Option A
  4. Quick Check:

    parameters block = user inputs [OK]
Hint: Parameters block = user input before job runs [OK]
Common Mistakes:
  • Confusing parameters with stages
  • Thinking parameters set environment variables
  • Mixing parameters with agent declaration
2. Which of the following is the correct syntax to declare a string parameter named VERSION in a Jenkins pipeline?
easy
A. parameters { param string VERSION = '1.0' }
B. parameters { string VERSION = '1.0' }
C. parameters { string(name: 'VERSION', defaultValue: '1.0', description: 'Version number') }
D. parameters { string VERSION: '1.0' }

Solution

  1. Step 1: Recall correct string parameter syntax

    The correct syntax uses string(name: 'NAME', defaultValue: 'value', description: 'text').
  2. Step 2: Check each option

    parameters { string(name: 'VERSION', defaultValue: '1.0', description: 'Version number') } matches the correct syntax. The other options use invalid or incorrect syntax.
  3. Final Answer:

    parameters { string(name: 'VERSION', defaultValue: '1.0', description: 'Version number') } -> Option C
  4. Quick Check:

    Correct string param syntax = parameters { string(name: 'VERSION', defaultValue: '1.0', description: 'Version number') } [OK]
Hint: Use string(name: 'NAME', defaultValue: '', description: '') [OK]
Common Mistakes:
  • Using assignment (=) inside parameters block
  • Omitting parameter name key
  • Incorrect parameter declaration keywords
3. Given this Jenkins pipeline snippet:
pipeline {
  agent any
  parameters {
    booleanParam(name: 'DEPLOY', defaultValue: true, description: 'Deploy to production?')
  }
  stages {
    stage('Check') {
      steps {
        script {
          if (params.DEPLOY) {
            echo 'Deploying...'
          } else {
            echo 'Skipping deploy'
          }
        }
      }
    }
  }
}

What will Jenkins print if the user selects false for DEPLOY?
medium
A. Deploying...
B. No output
C. Error: DEPLOY parameter not found
D. Skipping deploy

Solution

  1. Step 1: Understand booleanParam usage

    The parameter DEPLOY is a boolean with default true, but user selects false.
  2. Step 2: Follow the if condition in script

    If params.DEPLOY is true, it prints 'Deploying...'; else it prints 'Skipping deploy'. Since user chose false, it prints 'Skipping deploy'.
  3. Final Answer:

    Skipping deploy -> Option D
  4. Quick Check:

    params.DEPLOY false = 'Skipping deploy' [OK]
Hint: Boolean param false triggers else branch [OK]
Common Mistakes:
  • Assuming defaultValue always used ignoring user input
  • Confusing parameter name case sensitivity
  • Expecting error when parameter is valid
4. Identify the error in this parameters block:
parameters {
  choice(name: 'ENV', choices: 'dev\nstaging\nprod', description: 'Select environment')
  string(name: 'TAG', default: 'latest', description: 'Docker tag')
}
medium
A. The choices string should use commas instead of newlines
B. The string parameter uses 'default' instead of 'defaultValue'
C. The choice parameter name must be uppercase
D. Parameters block cannot have multiple parameters

Solution

  1. Step 1: Check choice parameter syntax

    Choice parameter uses a newline-separated string for choices, which is correct.
  2. Step 2: Check string parameter syntax

    String parameter must use 'defaultValue', not 'default'. This causes a syntax error.
  3. Final Answer:

    The string parameter uses 'default' instead of 'defaultValue' -> Option B
  4. Quick Check:

    String param defaultValue key required [OK]
Hint: Use defaultValue, not default, for string parameters [OK]
Common Mistakes:
  • Using 'default' instead of 'defaultValue'
  • Misformatting choices string
  • Assuming parameter names must be uppercase
5. You want to create a Jenkins pipeline that asks the user to select multiple branches to build from a list, but Jenkins does not have a built-in multi-select parameter. How can you simulate this using the parameters block?
hard
A. Use a string parameter where the user enters branch names separated by commas
B. Use multiple boolean parameters, one for each branch
C. Use a choice parameter with multiple selections enabled
D. Use a password parameter to hide branch names

Solution

  1. Step 1: Understand Jenkins parameter limitations

    Jenkins does not support multi-select choice parameters natively.
  2. Step 2: Find workaround using string parameter

    Using a string parameter, users can input multiple branch names separated by commas, which the pipeline can parse.
  3. Step 3: Evaluate other options

    Multiple booleans are cumbersome for many branches; choice parameter does not support multi-select; password parameter hides input but is unrelated.
  4. Final Answer:

    Use a string parameter where the user enters branch names separated by commas -> Option A
  5. Quick Check:

    Simulate multi-select with string input [OK]
Hint: Use comma-separated string input for multi-select simulation [OK]
Common Mistakes:
  • Expecting multi-select choice parameter exists
  • Using many booleans for many options
  • Misusing password parameter for selection
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