Bird
Raised Fist0
Jenkinsdevops~20 mins

Library directory structure in Jenkins - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Jenkins Library Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding Jenkins Shared Library Directory Structure

In Jenkins, a shared library has a specific directory structure. Which directory inside the library is used to store reusable Groovy scripts that can be called from Jenkins pipelines?

Avars
Bsrc
Cresources
Ddocs
Attempts:
2 left
💡 Hint

Think about where simple scripts or functions are placed for easy access in pipelines.

💻 Command Output
intermediate
1:30remaining
Listing Files in a Jenkins Shared Library

You have a Jenkins shared library repository with the following structure:

src/org/example/Utils.groovy
vars/build.groovy
resources/config.yaml

What will be the output of the command ls vars when run in the root of the library?

Aconfig.yaml
BUtils.groovy
CNo such file or directory
Dbuild.groovy
Attempts:
2 left
💡 Hint

Check which files are inside the vars folder.

🔀 Workflow
advanced
2:00remaining
Correct Order of Jenkins Shared Library Loading

Arrange the steps in the correct order for how Jenkins loads a shared library during pipeline execution.

A2,1,3,4
B1,2,3,4
C1,3,2,4
D1,2,4,3
Attempts:
2 left
💡 Hint

Think about configuration first, then fetching code, then loading, then usage.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting Missing Shared Library Scripts

A Jenkins pipeline fails with an error saying a function from the shared library is not found. The shared library has the correct directory structure and is configured properly. What is the most likely cause?

AThe pipeline script syntax is invalid.
BThe 'vars' directory is missing from the library repository.
CThe function is defined in 'src' but not imported or called correctly in the pipeline.
DThe Jenkins master node is offline.
Attempts:
2 left
💡 Hint

Consider how code in 'src' is accessed differently than code in 'vars'.

✅ Best Practice
expert
2:30remaining
Best Practice for Organizing Jenkins Shared Library Resources

Which is the best practice for storing configuration files like YAML or JSON in a Jenkins shared library to be used by pipeline scripts?

APlace configuration files inside the 'resources' directory and load them using the library resource loader.
BEmbed configuration files directly inside Groovy scripts in the 'vars' directory.
CStore configuration files in the root directory of the shared library repository.
DKeep configuration files outside the shared library and load them from an external URL.
Attempts:
2 left
💡 Hint

Think about separation of code and static resources in Jenkins libraries.

Practice

(1/5)
1. What is the primary purpose of the vars/ directory in a Jenkins shared library?
easy
A. To store simple Groovy scripts accessible as global variables
B. To store compiled Java classes
C. To hold configuration files like YAML or JSON
D. To keep pipeline job definitions

Solution

  1. Step 1: Understand the role of vars/ directory

    The vars/ directory is used to store simple Groovy scripts that Jenkins loads as global variables or functions.
  2. Step 2: Differentiate from other directories

    The src/ directory is for classes, and resources/ is for config files, so vars/ is specifically for simple scripts.
  3. Final Answer:

    To store simple Groovy scripts accessible as global variables -> Option A
  4. Quick Check:

    vars/ = simple scripts [OK]
Hint: Remember: vars = simple scripts, src = classes, resources = configs [OK]
Common Mistakes:
  • Confusing vars/ with src/ directory
  • Thinking vars/ holds config files
  • Assuming vars/ stores compiled classes
2. Which directory should you place a Groovy class file named MyHelper.groovy in a Jenkins shared library?
easy
A. src/
B. vars/
C. resources/
D. jobs/

Solution

  1. Step 1: Identify the purpose of src/ directory

    The src/ directory is meant for Groovy or Java classes in a Jenkins shared library.
  2. Step 2: Match the file type to directory

    Since MyHelper.groovy is a class file, it belongs in src/, not vars/ or resources/.
  3. Final Answer:

    src/ -> Option A
  4. Quick Check:

    Classes go to src/ [OK]
Hint: Classes always go inside src/ folder [OK]
Common Mistakes:
  • Placing class files in vars/
  • Putting Groovy classes inside resources/
  • Using non-existent jobs/ directory
3. Given this Jenkins shared library structure:
vars/notify.groovy
src/org/example/Helper.groovy
resources/config/settings.yml
Which file would you use to load configuration settings inside a pipeline?
medium
A. vars/notify.groovy
B. resources/config/settings.yml
C. vars/settings.yml
D. src/org/example/Helper.groovy

Solution

  1. Step 1: Identify the purpose of resources/ directory

    The resources/ directory holds static files like configuration files (YAML, JSON) used by the library.
  2. Step 2: Match the file type to usage

    Since settings.yml is a config file, it should be loaded from resources/config/settings.yml.
  3. Final Answer:

    resources/config/settings.yml -> Option B
  4. Quick Check:

    Config files = resources/ [OK]
Hint: Config files always go in resources/ [OK]
Common Mistakes:
  • Trying to load config from vars/
  • Confusing class files with config files
  • Assuming config files go in src/
4. You placed a Groovy script build.groovy inside resources/ directory. What issue will you face when trying to call build() in your Jenkins pipeline?
medium
A. The script will run normally without issues
B. The script will be compiled but not executed
C. Jenkins will throw a missing method error because resources/ is for static files only
D. The pipeline will ignore the script and continue silently

Solution

  1. Step 1: Understand the role of resources/ directory

    The resources/ directory is only for static files like configs, not executable Groovy scripts.
  2. Step 2: Consequence of placing script in resources/

    Since build.groovy is not in vars/ or src/, Jenkins cannot load it as a callable method, causing a missing method error.
  3. Final Answer:

    Jenkins will throw a missing method error because resources/ is for static files only -> Option C
  4. Quick Check:

    Scripts must be in vars/ or src/ [OK]
Hint: Scripts in resources/ cause missing method errors [OK]
Common Mistakes:
  • Expecting Groovy scripts to run from resources/
  • Ignoring directory purpose and mixing files
  • Assuming silent failure without error
5. You want to create a reusable Jenkins shared library that includes:
- A global function notifyBuild
- A helper class BuildHelper
- A configuration file email.yml
Which directory structure correctly organizes these files?
hard
A. src/notifyBuild.groovy, vars/BuildHelper.groovy, resources/email.yml
B. vars/notifyBuild.groovy, resources/BuildHelper.groovy, src/email.yml
C. resources/notifyBuild.groovy, src/BuildHelper.groovy, vars/email.yml
D. vars/notifyBuild.groovy, src/BuildHelper.groovy, resources/email.yml

Solution

  1. Step 1: Assign global functions to vars/

    Global functions like notifyBuild go into vars/ as Groovy scripts.
  2. Step 2: Place helper classes in src/

    Classes like BuildHelper belong in src/ directory.
  3. Step 3: Store config files in resources/

    Configuration files such as email.yml must be inside resources/.
  4. Final Answer:

    vars/notifyBuild.groovy, src/BuildHelper.groovy, resources/email.yml -> Option D
  5. Quick Check:

    vars = functions, src = classes, resources = configs [OK]
Hint: Match file type: vars=func, src=class, resources=config [OK]
Common Mistakes:
  • Swapping vars/ and src/ for functions and classes
  • Placing config files outside resources/
  • Mixing file types in wrong directories
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