Where Are Jenkins Web Application Resources Located: Complete Guide to Static Assets
Jenkins web application resources are stored in the war/src/main/webapp/ directory of the jenkinsci/jenkins repository and packaged into the root context (/) of the Jenkins WAR file during the Maven build process.
All static assets powering the Jenkins user interface—including HTML templates, JavaScript utilities, CSS stylesheets, and image assets—reside in a centralized location within the war module. When the build completes, these files are bundled into jenkins.war and served directly by the servlet container without server-side processing.
Primary Location: The war/src/main/webapp/ Directory
According to the jenkinsci/jenkins source code, the definitive source of Jenkins web application resources is:
war/src/main/webapp/
This directory follows the standard Maven WAR project structure. During compilation, Maven assembles everything under this path into the final jenkins.war artifact, placing contents at the web application root. The servlet container then serves these files directly at the root context path, making them accessible to browsers and accessible to Jelly and Groovy views through specific URL patterns.
Key Subdirectories
The webapp/ directory organizes assets into functional categories:
scripts/– Client-side JavaScript files handling AJAX requests, DOM manipulation, and UI interactionsimages/– Raster graphics (PNG, GIF) for legacy icon support and build status indicatorsimages/svgs/– Vector graphics comprising the majority of modern Jenkins UI icons, including the application logo
Critical Resource Files
The following files represent core Jenkins web application resources referenced throughout the UI:
| File Path | Purpose |
|---|---|
war/src/main/webapp/scripts/utilities.js |
Core AJAX helpers and DOM manipulation utilities |
war/src/main/webapp/scripts/redirect.js |
Legacy URL redirection logic |
war/src/main/webapp/scripts/loading.js |
Loading indicator state management |
war/src/main/webapp/images/svgs/logo.svg |
Primary Jenkins logo rendered in the header |
war/src/main/webapp/images/build-status/build-status-sprite.svg |
SVG sprite sheet for build status icons |
war/src/main/webapp/robots.txt |
Default web crawler exclusion rules |
war/src/main/webapp/mask-icon.svg |
Safari pinned tab icon |
Accessing Resources in Jelly and Groovy Views
Jenkins server-side views reference these static assets using the ${rootURL} expression combined with the /static/ path prefix. The servlet container resolves these paths to the corresponding files in war/src/main/webapp/.
Loading the core JavaScript utility library:
<script src="${rootURL}/static/../scripts/utilities.js"></script>
Referencing the Jenkins logo SVG in a view:
<img src="${rootURL}/static/../images/svgs/logo.svg" alt="Jenkins">
Displaying build status icons using the sprite sheet:
<img src="${rootURL}/static/../images/build-status/build-status-sprite.svg" class="icon">
Build-Time Packaging Process
During the Maven build lifecycle, the war module aggregates all resources from src/main/webapp/ into the final WAR archive. This packaging ensures that:
- Static assets are available at the application root without context path prefixing issues
- Browser caching headers can be applied uniformly to static content
- Plugins can reference core UI assets through predictable URL patterns
The war/src/main/webapp/ structure maps directly to the deployed application structure, meaning a file at war/src/main/webapp/images/icon.png becomes accessible at https://jenkins-server/images/icon.png at runtime.
Summary
- Jenkins web application resources reside in
war/src/main/webapp/within the jenkinsci/jenkins repository - The
scripts/subdirectory contains client-side JavaScript utilities likeutilities.jsandloading.js - Vector icons and logos are stored in
images/svgs/, includinglogo.svgandbuild-status-sprite.svg - Views reference assets using
${rootURL}/static/../paths that resolve to the webapp root - Maven packages these files into the root context of
jenkins.warduring the build process
Frequently Asked Questions
Where exactly are Jenkins web application resources stored in the source code?
Jenkins web application resources are stored under war/src/main/webapp/ in the jenkinsci/jenkins GitHub repository. This Maven-standard directory contains all HTML, JavaScript, CSS, and image files that comprise the Jenkins user interface, organized into subdirectories like scripts/ and images/.
How do Jenkins views reference static web resources?
Jenkins Jelly and Groovy views reference static resources using the expression ${rootURL}/static/../ followed by the relative path from webapp/. For example, ${rootURL}/static/../scripts/utilities.js resolves to the utilities script, while ${rootURL}/static/../images/svgs/logo.svg loads the application logo.
What is the difference between the images/ and images/svgs/ directories?
The images/ directory contains legacy raster graphics including PNG and GIF files used for older browser compatibility, while images/svgs/ houses modern vector graphics that scale for high-DPI displays. The SVG subdirectory contains the majority of current UI icons, including the main Jenkins logo and build status indicators.
Are web application resources accessible to Jenkins plugins?
Yes, plugins can reference core Jenkins web application resources using the same URL patterns available to core views. However, plugins typically bundle their own static assets in their respective src/main/webapp/ directories, which get served under the plugin's URL namespace while still leveraging the core asset structure for shared icons and utilities.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →