A Jenkinsfile is a text file that contains the pipeline code for Jenkins to automate tasks like building, testing, and deploying software.
Click to reveal answer
beginner
Why use a Jenkinsfile per branch?
Using a Jenkinsfile per branch lets each branch have its own pipeline steps, so you can test or deploy differently depending on the branch.
Click to reveal answer
intermediate
How does Jenkins decide which Jenkinsfile to use when building a branch?
Jenkins checks out the branch code and uses the Jenkinsfile found in that branch's root directory to run the pipeline.
Click to reveal answer
intermediate
What is a simple way to test different Jenkinsfiles for different branches?
Create a Jenkinsfile in each branch with the specific pipeline steps you want, then Jenkins will run the pipeline from that file when building that branch.
Click to reveal answer
beginner
Can you use a shared Jenkinsfile for all branches instead of one per branch?
Yes, you can use one Jenkinsfile for all branches, but using one per branch gives more flexibility to customize pipelines per branch.
Click to reveal answer
What does Jenkins use to run a pipeline for a specific branch?
AA Jenkinsfile from a random branch
BA global Jenkinsfile from the master branch
CA Jenkinsfile stored on the Jenkins server only
DThe Jenkinsfile in that branch's code
✗ Incorrect
Jenkins uses the Jenkinsfile found in the checked-out branch to run the pipeline.
Why might you want a different Jenkinsfile per branch?
ATo customize build and deploy steps per branch
BTo confuse the Jenkins server
CBecause Jenkins requires it
DTo avoid using pipelines
✗ Incorrect
Different branches can have different pipeline needs, so separate Jenkinsfiles allow customization.
If you add a Jenkinsfile only to the main branch, what happens when Jenkins builds a feature branch without a Jenkinsfile?
AJenkins will use the main branch Jenkinsfile automatically
BJenkins will create a Jenkinsfile for the branch
CJenkins will fail or not run the pipeline
DJenkins will skip the build
✗ Incorrect
Jenkins looks for a Jenkinsfile in the branch; if missing, the pipeline cannot run.
How can you manage common pipeline steps across branches while using Jenkinsfile per branch?
AUse shared libraries or include common scripts
BCopy the entire Jenkinsfile manually to each branch
CUse no Jenkinsfile at all
DRun pipelines only on the master branch
✗ Incorrect
Shared libraries let you reuse code while keeping branch-specific Jenkinsfiles.
What is the best practice for storing Jenkinsfiles in a Git repository?
AStore Jenkinsfile in a separate repository
BStore Jenkinsfile in the root directory of each branch
CStore Jenkinsfile only on the Jenkins server
DStore Jenkinsfile in a hidden folder outside the repo
✗ Incorrect
Jenkins expects the Jenkinsfile in the root of the branch's code to run pipelines.
Explain how Jenkins uses Jenkinsfiles when building different branches in a Git repository.
Think about how Jenkins finds and runs pipeline code per branch.
You got /4 concepts.
Describe the advantages of having a Jenkinsfile per branch compared to a single Jenkinsfile for all branches.
Consider why branches might need different automation steps.
You got /4 concepts.
Practice
(1/5)
1. What is the main benefit of having a separate Jenkinsfile in each branch?
easy
A. It allows customizing the pipeline for each branch independently.
B. It forces all branches to use the same pipeline configuration.
C. It disables pipeline execution on branches without a Jenkinsfile.
D. It merges all branch pipelines into one global pipeline.
Solution
Step 1: Understand Jenkinsfile per branch concept
Each branch can have its own Jenkinsfile, allowing different pipeline steps or settings per branch.
Step 2: Compare options
It allows customizing the pipeline for each branch independently. correctly states the benefit. Options A, B, and D describe incorrect behaviors.
Final Answer:
It allows customizing the pipeline for each branch independently. -> Option A
Quick Check:
Separate Jenkinsfiles = branch-specific pipelines [OK]
Hint: Separate Jenkinsfiles mean separate pipelines per branch [OK]
Common Mistakes:
Thinking one Jenkinsfile applies to all branches
Assuming Jenkinsfile absence disables pipeline
Believing pipelines merge automatically
2. Which of the following is the correct syntax to checkout from a specific branch in a multibranch pipeline?
Step 1: Identify correct syntax for branch checkout
Using the git step with branch and url is the simplest correct way to checkout a specific branch.
Step 2: Analyze options
The snippet using git branch: 'main', url: 'https://repo.git' is correct. The snippet using checkout([$class: 'GitSCM', branches: ['refs/heads/feature'], userRemoteConfigs: [[url: 'https://repo.git']]]) has invalid syntax for branches (expects list of maps like [[name: 'refs/heads/feature']]). The snippet using script { checkout scm } checks out the current SCM without specifying a branch. The snippet using load 'Jenkinsfile' loads a Groovy script but does not checkout a branch.
What will Jenkins print if the branch is named feature/login?
medium
A. No output
B. Deploying main branch
C. Deploying feature branch
D. Pipeline fails with error
Solution
Step 1: Understand branch name condition
The script checks if env.BRANCH_NAME equals 'main'. If yes, it prints 'Deploying main branch', else 'Deploying feature branch'.
Step 2: Apply branch name 'feature/login'
Since the branch is 'feature/login', it does not equal 'main', so the else branch runs printing 'Deploying feature branch'.
Final Answer:
Deploying feature branch -> Option C
Quick Check:
Branch name check leads to else output [OK]
Hint: Check branch name string exactly for condition [OK]
Common Mistakes:
Assuming partial match triggers main branch output
Confusing env.BRANCH_NAME with other variables
Expecting no output if branch is not main
4. You have a Jenkinsfile in your feature branch but the pipeline fails with error: groovy.lang.MissingPropertyException: No such property: env for class. What is the likely cause?
medium
A. The env variable is used outside a script block.
B. The Jenkinsfile is missing the pipeline block.
C. The branch name is incorrect in the Jenkinsfile.
D. The Jenkinsfile is not committed to the branch.
Solution
Step 1: Understand env variable usage
In declarative pipelines, env variables must be accessed inside a script block to use Groovy expressions.
Step 2: Analyze error cause
The error indicates env is not recognized, likely because it is used outside a script block where Groovy code runs.
Final Answer:
The env variable is used outside a script block. -> Option A
Quick Check:
Use env only inside script blocks [OK]
Hint: Access env variables only inside script blocks [OK]
Common Mistakes:
Using env directly in steps without script
Assuming missing pipeline block causes env error
Not committing Jenkinsfile to branch
5. You want to maintain a single Jenkinsfile in the main branch but customize pipeline steps for feature/* branches without creating Jenkinsfiles in each feature branch. Which approach is best?
hard
A. Configure Jenkins to ignore feature branches.
B. Create symbolic links to the main Jenkinsfile in each feature branch.
C. Use separate Jenkinsfiles in each feature branch and merge them manually.
D. Use when { branch 'feature/*' } conditions inside the Jenkinsfile to run different stages.
Solution
Step 1: Understand single Jenkinsfile with branch conditions
You can use when { branch 'pattern' } in declarative pipelines to run stages only on matching branches.
Step 2: Evaluate options
Use when { branch 'feature/*' } conditions inside the Jenkinsfile to run different stages. uses branch conditions inside one Jenkinsfile, which fits the requirement. Create symbolic links to the main Jenkinsfile in each feature branch. is not practical or supported. Use separate Jenkinsfiles in each feature branch and merge them manually. contradicts the goal of single Jenkinsfile. Configure Jenkins to ignore feature branches. ignores feature branches, not customizing them.
Final Answer:
Use when { branch 'feature/*' } conditions inside the Jenkinsfile to run different stages. -> Option D
Quick Check:
Branch conditions enable single Jenkinsfile customization [OK]
Hint: Use when branch conditions for per-branch steps [OK]
Common Mistakes:
Trying to link Jenkinsfiles across branches
Creating multiple Jenkinsfiles despite single file goal
Ignoring feature branches instead of customizing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.