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 interactions
  • images/ – Raster graphics (PNG, GIF) for legacy icon support and build status indicators
  • images/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:

  1. Static assets are available at the application root without context path prefixing issues
  2. Browser caching headers can be applied uniformly to static content
  3. 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 like utilities.js and loading.js
  • Vector icons and logos are stored in images/svgs/, including logo.svg and build-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.war during 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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →