š Scenario: You are setting up a Jenkins shared library to reuse common pipeline code across multiple projects. This library will have a specific directory structure that Jenkins expects.
šÆ Goal: Build the basic directory structure for a Jenkins shared library with folders for vars and src, and add a simple Groovy script in vars.
š What You'll Learn
Create a root directory named my-shared-library
Inside it, create a vars directory
Inside vars, create a Groovy file named hello.groovy with a simple function
Create a src directory inside the root directory
š” Why This Matters
š Real World
Jenkins shared libraries help teams reuse pipeline code easily, making CI/CD pipelines cleaner and easier to maintain.
š¼ Career
Understanding the Jenkins shared library structure is essential for DevOps engineers to create scalable and maintainable automation pipelines.
Progress0 / 4 steps
1
Create the root directory and vars folder
Create a directory named my-shared-library and inside it create another directory named vars.
Jenkins
Hint
Use commands like mkdir -p my-shared-library/vars to create nested directories.
2
Add a Groovy script in vars folder
Inside the vars directory, create a file named hello.groovy with this exact content: def call() { echo 'Hello from shared library!' }
Jenkins
Hint
Use a text editor or echo command to create the file with the exact function.
3
Create the src directory
Inside the my-shared-library directory, create a directory named src.
Jenkins
Hint
Use mkdir my-shared-library/src to create the src folder.
4
Display the directory structure
Use a command to display the full directory structure of my-shared-library showing vars/hello.groovy and src folders.
Jenkins
Hint
Use the tree command or ls -R to show the directory structure.
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
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.
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.
Final Answer:
To store simple Groovy scripts accessible as global variables -> Option A
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
Step 1: Identify the purpose of src/ directory
The src/ directory is meant for Groovy or Java classes in a Jenkins shared library.
Step 2: Match the file type to directory
Since MyHelper.groovy is a class file, it belongs in src/, not vars/ or resources/.
Final Answer:
src/ -> Option A
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
Step 1: Identify the purpose of resources/ directory
The resources/ directory holds static files like configuration files (YAML, JSON) used by the library.
Step 2: Match the file type to usage
Since settings.yml is a config file, it should be loaded from resources/config/settings.yml.
Final Answer:
resources/config/settings.yml -> Option B
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
Step 1: Understand the role of resources/ directory
The resources/ directory is only for static files like configs, not executable Groovy scripts.
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.
Final Answer:
Jenkins will throw a missing method error because resources/ is for static files only -> Option C
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
Step 1: Assign global functions to vars/
Global functions like notifyBuild go into vars/ as Groovy scripts.
Step 2: Place helper classes in src/
Classes like BuildHelper belong in src/ directory.
Step 3: Store config files in resources/
Configuration files such as email.yml must be inside resources/.
Final Answer:
vars/notifyBuild.groovy, src/BuildHelper.groovy, resources/email.yml -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.