Bird
Raised Fist0
Jenkinsdevops~5 mins

Jenkinsfile concept - Commands & Configuration

Choose your learning style10 modes available
Introduction
A Jenkinsfile is a text file that defines the steps Jenkins will run to build, test, and deploy your software. It helps automate these tasks so you don't have to do them manually every time.
When you want to automate running tests every time you save code changes.
When you need to build your app and create a package automatically.
When you want to deploy your app to a server without manual steps.
When you want to keep your build and deployment steps in the same place as your code.
When you want to share your automation steps with your team easily.
Config File - Jenkinsfile
Jenkinsfile
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building the application...'
            }
        }
        stage('Test') {
            steps {
                echo 'Running tests...'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying the application...'
            }
        }
    }
}

pipeline: Defines the entire automation process.

agent any: Runs the pipeline on any available Jenkins worker.

stages: Groups the steps into phases like Build, Test, and Deploy.

steps: The actual commands or actions Jenkins will run in each stage.

Commands
Check if Jenkins job builder is installed and its version to ensure Jenkins can read Jenkinsfiles.
Terminal
jenkins-jobs --version
Expected OutputExpected
jenkins-job-builder 3.10.0
Initialize a git repository to track your Jenkinsfile and code changes.
Terminal
git init
Expected OutputExpected
Initialized empty Git repository in /home/user/my-app/.git/
Add the Jenkinsfile to the git repository so it can be version controlled.
Terminal
git add Jenkinsfile
Expected OutputExpected
No output (command runs silently)
Save the Jenkinsfile in git with a message describing the change.
Terminal
git commit -m "Add Jenkinsfile with build, test, deploy stages"
Expected OutputExpected
[master (root-commit) abcdef1] Add Jenkinsfile with build, test, deploy stages 1 file changed, 15 insertions(+) create mode 100644 Jenkinsfile
→
-m - Add a commit message inline
Trigger the Jenkins pipeline named 'my-pipeline' which uses the Jenkinsfile to run the automation.
Terminal
jenkins-cli build my-pipeline
Expected OutputExpected
Started build #1 Waiting for build to complete... Finished: SUCCESS
Key Concept

If you remember nothing else from this pattern, remember: a Jenkinsfile stores your automation steps as code so Jenkins can run them automatically.

Common Mistakes
Writing Jenkinsfile syntax incorrectly without proper indentation or missing braces.
Jenkinsfile uses Groovy syntax and requires correct structure; errors cause pipeline failures.
Use a text editor with Groovy support and validate the Jenkinsfile syntax before committing.
Not committing the Jenkinsfile to the git repository.
Jenkins cannot find the Jenkinsfile to run the pipeline if it is not in the repository.
Always add and commit the Jenkinsfile to your source control along with your code.
Running pipeline commands without configuring Jenkins to use the Jenkinsfile.
Jenkins needs to be set up to look for the Jenkinsfile in the repository to run the pipeline.
Configure your Jenkins job to use Pipeline script from SCM and point to your repository.
Summary
Create a Jenkinsfile to define build, test, and deploy steps as code.
Add and commit the Jenkinsfile to your git repository for version control.
Trigger the Jenkins pipeline to run the automation steps defined in the Jenkinsfile.

Practice

(1/5)
1. What is the main purpose of a Jenkinsfile in Jenkins?
easy
A. To configure Jenkins server settings
B. To define the steps and stages of a build process in code
C. To store Jenkins user credentials securely
D. To create a backup of Jenkins jobs

Solution

  1. Step 1: Understand Jenkinsfile role

    A Jenkinsfile is a text file that defines the build process in Jenkins using code.
  2. Step 2: Compare options with Jenkinsfile purpose

    Only To define the steps and stages of a build process in code describes defining build steps and stages, which is the Jenkinsfile's main role.
  3. Final Answer:

    To define the steps and stages of a build process in code -> Option B
  4. Quick Check:

    Jenkinsfile = build process code [OK]
Hint: Jenkinsfile scripts the build steps in code [OK]
Common Mistakes:
  • Confusing Jenkinsfile with Jenkins server config
  • Thinking Jenkinsfile stores credentials
  • Assuming Jenkinsfile is for backup
2. Which of the following is the correct way to start a declarative pipeline in a Jenkinsfile?
easy
A. pipeline {
B. stage {
C. node {
D. build {

Solution

  1. Step 1: Recall declarative pipeline syntax

    A declarative pipeline always starts with the keyword pipeline { to define the pipeline block.
  2. Step 2: Check other options

    stage { defines a stage inside the pipeline, node { is used in scripted pipelines, and build { is not a valid top-level block.
  3. Final Answer:

    pipeline { -> Option A
  4. Quick Check:

    Declarative pipeline starts with pipeline { [OK]
Hint: Declarative pipelines always start with 'pipeline {' [OK]
Common Mistakes:
  • Starting with stage instead of pipeline
  • Using node block in declarative pipeline
  • Using invalid block names like build
3. Given this Jenkinsfile snippet, what will be the output in the console?
pipeline {
  agent any
  stages {
    stage('Example') {
      steps {
        echo 'Hello, Jenkins!'
      }
    }
  }
}
medium
A. pipeline syntax error
B. No output, pipeline skipped
C. Hello, Jenkins!
D. Stage 'Example' failed

Solution

  1. Step 1: Analyze the pipeline structure

    The pipeline has one stage named 'Example' with a step that echoes 'Hello, Jenkins!'.
  2. Step 2: Understand echo step behavior

    The echo step prints the given message to the Jenkins console output during the build.
  3. Final Answer:

    Hello, Jenkins! -> Option C
  4. Quick Check:

    echo prints message = Hello, Jenkins! [OK]
Hint: echo prints text to console output [OK]
Common Mistakes:
  • Assuming syntax error without checking code
  • Thinking pipeline skips stages by default
  • Confusing echo with failure
4. Identify the error in this Jenkinsfile snippet:
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        sh 'mvn clean install'
      }
    }
  }
  post {
    always {
      echo 'Build finished'
    }
  }
}
medium
A. sh step requires double quotes instead of single quotes
B. Incorrect placement of post block outside pipeline
C. Missing closing brace for stages block
D. No error, syntax is correct

Solution

  1. Step 1: Check block structure

    All blocks (pipeline, stages, stage, steps, post) are properly opened and closed.
  2. Step 2: Validate syntax rules

    The post block is correctly placed inside the pipeline block. The sh step accepts single or double quotes.
  3. Final Answer:

    No error, syntax is correct -> Option D
  4. Quick Check:

    Proper block structure = no syntax error [OK]
Hint: Check matching braces and block placement [OK]
Common Mistakes:
  • Assuming post block must be inside stages
  • Thinking single quotes cause error in sh step
  • Missing braces in nested blocks
5. You want to add a stage in your Jenkinsfile that only runs tests if the branch is 'main'. Which snippet correctly implements this conditional stage?
hard
A. stage('Test') { when { branch 'main' } steps { echo 'Running tests' } }
B. stage('Test') { if (env.BRANCH_NAME == 'main') { steps { echo 'Running tests' } } }
C. stage('Test') { steps { if (branch == 'main') { echo 'Running tests' } } }
D. stage('Test') { when { environment 'main' } steps { echo 'Running tests' } }

Solution

  1. Step 1: Understand Jenkins conditional syntax

    Declarative pipelines use the when block with branch 'branchName' to conditionally run stages.
  2. Step 2: Evaluate each option

    stage('Test') { when { branch 'main' } steps { echo 'Running tests' } } correctly uses when { branch 'main' }. stage('Test') { if (env.BRANCH_NAME == 'main') { steps { echo 'Running tests' } } } uses scripted style inside declarative, which is invalid. stage('Test') { steps { if (branch == 'main') { echo 'Running tests' } } } tries to use if inside steps, which is not supported. stage('Test') { when { environment 'main' } steps { echo 'Running tests' } } uses environment incorrectly.
  3. Final Answer:

    stage('Test') { when { branch 'main' } steps { echo 'Running tests' } } -> Option A
  4. Quick Check:

    Use when { branch 'name' } for conditional stages [OK]
Hint: Use when { branch 'main' } to run stage conditionally [OK]
Common Mistakes:
  • Using if statements inside declarative stages
  • Misusing environment instead of branch in when
  • Placing condition inside steps block
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