The versions of Winstone and Jetty bundled in the Jenkins WAR file.
This is one stop global knowledge base where you can learn about all the products, solutions and support features.
This page documents the servlet container support policy for the Jenkins controller.
Jenkins is typically run as a standalone application in its own process. The Jenkins WAR file bundles Winstone, a Jetty servlet container wrapper, and can be started on any operating system or platform with a version of Java supported by Jenkins. This is the preferred way to deploy Jenkins and is fully supported.
Theoretically, Jenkins can also be run as a servlet in a traditional servlet container like Apache Tomcat or WildFly, but in practice this is largely untested and there are many caveats. In particular, support for WebSocket agents is only implemented for the Jetty servlet container.
Support for traditional servlet containers may be discontinued in the future. |
We define multiple support levels for servlet containers.
Support level | Description | Servlet containers |
---|---|---|
Level 1: Supported |
We run automated testing for these servlet containers, and we intend to fix reported issues in a timely manner. |
The versions of Winstone and Jetty bundled in the Jenkins WAR file. |
Level 2: Patches considered |
Support may have limitations and extra requirements. We do not regularly test compatibility, and we may drop support at any time. We consider patches that do not put Level 1 support at risk and do not create maintenance overhead. |
|
Level 3: Unsupported |
These versions are known to be incompatible or to have severe limitations. We do not support the listed servlet containers. |
|
Installation instructions
Jetty versions
Tomcat versions
WildFly 27 release announcement
You are welcome to propose PRs that add support or documentation for other servlet containers or to share feedback; we will appreciate your contributions! Servlet container support in Jenkins falls under the Platform Special Interest Group which has a chat, a mailing list, and regular meetings. You are welcome to join these channels.
There are a few details and steps to upgrade the JVM used to run Jenkins, more specifically from Java 8 to Java 11.
If you’re upgrading the JVM used to run Jenkins, and particularly if you’re upgrading from Java 8 to Java 11, there are some details you should know and precautions you should take.
As with any upgrade, we recommend backing up
JENKINS_HOME
and testing the upgrade with the backup before performing the upgrade on your production instance.
If you need to upgrade Jenkins as well as the JVM, we recommend that you:
Back up
JENKINS_HOME
Upgrade Jenkins to the most recent version
How you upgrade Jenkins is dependent upon your original Jenkins installation method.
We recommend that you use the package manager of your system (such as
apt
or
yum
).
Validate the upgrade to confirm that all plugins and jobs are loaded
Upgrade the required plugins (see Upgrading Plugins)
Make a second backup of
JENKINS_HOME
after upgrading Jenkins and the required plugins
Stop the Jenkins instance
Upgrade the JVM on which Jenkins is running
Use a package manager to install the new JVM.
Make sure the default JVM is the newly installed version. If it is not, run
systemctl edit jenkins
and set either the
JAVA_HOME
environment variable or the
JENKINS_JAVA_CMD
environment variable.
Starting with the Jenkins 2.357 weekly release and the Long Term Support release 2.361.1, Java 11 or Java 17 is required.
It’s important not just to upgrade Jenkins and the JVM, but also to upgrade the plugins which support Java 11. Plugin upgrades assure compatibility with the most recent Jenkins releases.
If you discover a previously unreported issue, please let us know: read how to report an issue for guidance. |
Some plugins use JAXB libraries provided by the JDK.
However, the
java.xml.bind
and
javax.activation
modules are no longer included in OpenJDK 11, and plugins might fail if no replacement is offered.
To fix this problem, we’ve bundled those libraries into a new detached plugin: JAXB plugin.
When any Jenkins core more recent than
2.163
is running on Java 11, this plugin is automatically installed.
However, if you manage your plugins outside Jenkins, for example, if you use
plugins.txt
in your Docker images, you might need to install the plugin explicitly.
All agents must be running on the same JVM version as the controller due to how controllers and agents communicate. If you’re upgrading your Jenkins controller to run on Java 11, you also need to upgrade the JVM on your agents.
You can validate the version of each agent with the Versions Node Monitors plugin. This plugin provides information about the JVM version of each agent on the node management screen of your Jenkins instance. You can also configure this plugin to automatically disconnect any agent with an incorrect JVM version.
Java Web Start has been removed in Java 11.
When a Jenkins controller runs on Java 11, the Java Web Start button will no longer appear in the Web UI.
You can’t launch agents for a Java 11 Jenkins server from a
*.jnlp
file downloaded to a web browser.
There are no plans to replace this functionality.
Connect agents to Jenkins on Java 11 with plugins like SSH Build Agents Plugin, with operating system command line calls to
java -jar agent.jar
, or using containers.
Oracle JDK 11 licensing prevents the Jenkins community from listing the Oracle JDKs. Because of this licensing restriction, Oracle JDK 11 can’t be automatically installed by Jenkins. This problem is tracked in the issue JENKINS-54305.
As an alternative, we encourage you to use containers based on images that contain all the tooling needed for your builds.
This page documents the browser support policy in the Jenkins automation server. It does not apply to the Jenkins website or other services hosted by the Jenkins project. |
Jenkins web browser support falls into one of three classes:
Level 1: Â Aim to proactively fix these browsers and provide an equal UX across all.
Level 2: Â Accept patches to fix issues and make the best effort to ensure there is at least one way to do any action.
Level 3: Â No guarantees. We will accept patches, but only if they are low risk. This is the default unless a browser/version is listed below .
We do not claim any compatibility with or accept bug reports and patches for pre-release (e.g., alpha, beta, or canary) versions of browsers.
Browser | Level 1 | Level 2 | Level 3 |
---|---|---|---|
Google Chrome |
Latest regular release/patch |
Version N-1, latest patch |
Other versions |
Mozilla Firefox |
Latest regular release/patch; Latest ESRÂ release |
Version N-1, latest patch |
Other versions |
Microsoft Edge |
Latest regular release/patch |
Version N-1, latest patch |
Other versions |
Apple Safari |
Latest regular release/patch |
Version N-1, latest patch |
Other versions |
Support for mobile browsers (e.g. iOS Safari) has not yet been determined.
2022-02-01 - Remove support for Internet Explorer, Add Edge (discussion in the developer mailing list)
2019-11-19 - Policy update (discussion in the developer mailing list)
2014-09-03 - Original policy for Jenkins 1.579 (governance meeting notes)
This page documents the Windows support policy for the Jenkins server and agents.
Jenkins plugins, e.g., WMI Windows Agents, may set additional requirements to Windows versions on controllers and/or agents. This page does not document such requirements. Please refer to plugin documentation.
Theoretically, Jenkins can run everywhere where you can run a supported Java version, but there are some limitations in practice. Jenkins core and some plugins include native code or depend on Windows API and subsystems, and hence they rely on specific Windows platforms and versions. In Windows services, we also use Windows Service Wrapper (WinSW), which requires .NET Framework.
We define multiple support levels for Windows platforms.
Support level | Description | Platforms |
---|---|---|
Level 1 - Full support |
We run automated testing for these platforms, and we intend to fix the reported issues timely. |
|
Level 2 - Supported |
We do not actively test these platforms, but we intend to keep compatibility. We are happy to accept patches. |
|
Level 3 - Patches considered |
Support may have limitations and extra requirements. We do not test compatibility, and we may drop support if there is a need. We will consider patches if they do not put Level 1/2 support at risk and do not create maintenance overhead. |
|
Level 4 - Unsupported |
These versions are known to be incompatible or to have severe limitations. We do not support the listed platforms, and we will not accept patches. |
|
Starting from
Jenkins 2.238
,
.NET Framework 4.0 or above is required for all Windows service installations and built-in Windows service management logic.
Before
Jenkins 2.238
, .NET Framework 2.0 was supported
For platforms that do not support these versions, consider using Native executables provided by the Windows Service Wrapper project.
Microsoft Lifecycle Policy
Microsoft Product Lifecycle Search
If you would like to add support for more Windows platforms or to share feedback, we will appreciate your contributions! Windows support in Jenkins is Platform Special Interest Group which has a chat, a mailing list, and regular meetings. You are welcome to join these channels.
Jun 03, 2020 - First version (Discussion in the mailing list, Governance meeting notes)
The Blue Ocean Activity view shows all activities related to one Pipeline.
Blue Ocean status
Blue Ocean will not receive further functionality updates. Blue Ocean will continue to provide easy-to-use Pipeline visualization, but it will not be enhanced further. It will only receive selective updates for significant security issues or functional defects. |
The Activity view includes the standard navigation bar at the top and a local navigation bar below it.
The local navigation bar includes:
Pipeline Name - Selecting this displays the default Activity tab.
Favorites Toggle - Selecting the favorite icon ☆ to the right of the Pipeline name, adds a branch to the favorites list shown on the dashboard’s favorites list.
Tabs (Activity, Branches Pull Requests) - Selecting one of these navigates to the corresponding information in the Activity view.
The default tab of the Activity view shows a list of the latest completed or active runs. Each line represents the status of a run, run ID, commit information, and when the run completed.
Selecting a run will bring up the Pipeline run details to provide Pipeline visualization.
Active runs can be aborted from this list by selecting the stop icon, which is represented by a ◾ within a circle.
Runs that have been completed can be re-run by selecting the re-run icon ↺.
The list can be filtered by branch using the "Branch" drop-down in the list header.
This view does not allow runs to be edited or marked as favorites. To perform these actions, select the Branches tab.
The Branches tab shows a list of all branches that have a completed or active run in the current Pipeline. Each line in the list corresponds to a branch in source control, displaying the overall health of the branch based on the status of the most recent run, branch name, commit information, and when the run completed.
Selecting a branch brings up the Pipeline run details for the latest completed or active run of that branch.
Pipelines where the latest run has been completed can be run again by selecting the run icon, represented by a in a circle.
Active runs can be aborted, and display a stop icon, which is represented by a ◾ within a circle.
Selecting the history icon allows you to view the run history for that branch.
The edit icon, represented by a , opens the Pipeline editor for that branch.
The favorite ☆ icon adds a branch to your favorites list on the dashboard. On the dashboard a branch listed under favorites displays a solid star ★. Deselecting the star removes the branch from the favorites list.
The Pull Requests tab displays a list of all pull requests for the current Pipeline, that have a completed or active run. Each line in the list corresponds to a pull request in source control, which displays the status of the most recent run, run ID, summary, author, and when the run completed.
Blue Ocean displays pull requests and branches separately, but the lists behave similarly. Selecting a pull request in this list will bring up the Pipeline run details for the latest completed or active run of that pull request.
Active runs can be aborted from this list by selecting the stop icon, which is represented by a ◾ within a circle.
Pull requests whose latest run has been completed can be run again by selecting the run icon, represented by a in a circle.
The pull request list does not display health icons, and pull requests cannot be edited or marked as favorites.
By default, when a pull request is closed, Jenkins removes the Pipeline from Jenkins, and runs for that pull request are no longer accessible from Jenkins. The Pipelines removed in this way will need to be cleaned up in the future. This can be changed by adjusting the configuration of the underlying multi-branch Pipeline job. |
Was this page helpful?
Please submit your feedback about this page through this quick form.
Alternatively, if you don't wish to complete the quick form, you can simply indicate if you found this page helpful?
See existing feedback here.
Blue Ocean makes it easy to create a Pipeline project in Jenkins.
You can generate a Pipeline from an existing
Jenkinsfile
in source control, or you can use the Blue Ocean Pipeline editor to create a Pipeline as a
Jenkinsfile
that is committed to source control.
Blue Ocean status
Blue Ocean will not receive further functionality updates. Blue Ocean will continue to provide easy-to-use Pipeline visualization, but it will not be enhanced further. It will only receive selective updates for significant security issues or functional defects. Alternative options for Pipeline visualization, such as the Pipeline: Stage View and Pipeline Graph View plugins, are available and offer some of the same functionality. While not complete replacements for Blue Ocean, contributions are encouraged from the community for continued development of these plugins. The Pipeline syntax snippet generator assists users as they define Pipeline steps with their arguments. It is the preferred tool for Jenkins Pipeline creation, as it provides online help for the Pipeline steps available in your Jenkins controller. It uses the plugins installed on your Jenkins controller to generate the Pipeline syntax. Refer to the Pipeline steps reference page for information on all available Pipeline steps. |
To start setting up your Pipeline project in Blue Ocean, select the New Pipeline button at the top-right of the Blue Ocean Dashboard.
If your Jenkins instance is new or has no Pipeline projects or other items configured, Blue Ocean displays a Welcome to Jenkins message that allows you to select the Create a new Pipeline option to start setting up your Pipeline project.
You now have a choice of creating your new Pipeline project from a:
Standard Git repository
Repository on GitHub or GitHub Enterprise
Repository on Bitbucket Cloud or Bitbucket Server
To create your Pipeline project for a Git repository, click the Git button under Where do you store your code?
In the Connect to a Git repository section, enter the URL for your Git repository in the Repository URL field.
You now must specify a local or remote repository from which to build your Pipeline project.
If your URL is a local directory path beginning with a forward slash
/
, such as
/home/cloned-git-repos/my-git-repo.git
, you can proceed to select the
Create Pipeline
option.
Blue Ocean then scans your local repository’s branches for a
Jenkinsfile
, and starts a Pipeline run for each branch containing a
Jenkinsfile
.
If Blue Ocean cannot find a
Jenkinsfile
, you are prompted to create one through the Pipeline editor.
Local repositories are typically limited to file system access and are normally only available from the controller node. Local repositories are also known to require more complicated path names on Windows than most users want to manage. Users are advised to run jobs on agents, rather than running them directly on the controller. Therefore, you should use a remote repository rather than a local repository for the best Blue Ocean experience.
Since the Pipeline editor saves edited Pipelines to Git repositories as `Jenkinsfile`s, Blue Ocean only supports connections to remote Git repositories over the SSH protocol.
If your URL is for a remote Git repository, be sure your URL starts with either:
ssh://
- which displays as
ssh://gituser@git-server-url/git-server-repos-group/my-git-repo.git
or
user@host:path/to/git/repo.git
- which displays as
gituser@git-server-url:git-server-repos-group/my-git-repo.git
Blue Ocean automatically generates an SSH public/private key pair or provides you with an existing pair for the current Jenkins user. This credential is automatically registered in Jenkins with the following details for this Jenkins user:
Domain
:
blueocean-private-key-domain
ID
:
jenkins-generated-ssh-key
Name
:
<jenkins-username> (jenkins-generated-ssh-key)
You must ensure that this SSH public/private key pair is registered with your Git server before continuing.
If you have not already done this, follow these two steps.
Configure the SSH public key component of this key pair (which you can copy and paste from the Blue Ocean interface) for the remote Git server’s user account (e.g., within the
authorized_keys
file of the machine’s
gituser/.ssh
directory).
This process allows your Jenkins user to access the repositories that your Git server’s user account has access to. Refer to the "Setting Up the Server" of the Pro Git documentation. |
Return to the Blue Ocean interface.
Select the Create Pipeline option.
Blue Ocean scans your local repository’s branches for a
Jenkinsfile
and starts a Pipeline run for each branch containing a
Jenkinsfile
.
If Blue Ocean does not find a
Jenkinsfile
you are prompted to create one through the Pipeline editor.
To create your Pipeline project directly for a repository on GitHub, select the GitHub option under Where do you store your code? .
In the
Connect to GitHub
section, enter your GitHub access token into the
Your GitHub access token
field.
If you previously configured Blue Ocean to connect to GitHub using a personal access token, Blue Ocean takes you directly to the
GitHub account/organization and repository choice steps below:
If you do not have a GitHub access token, select the Create an access key here option to open GitHub to the New personal access token page.
In the new tab, sign in to your GitHub account.
On the
New Personal Access Token
page, specify a brief
Token description
for your GitHub access token, such as
Blue Ocean
.
An access token is usually an alphanumeric string that represents your GitHub account, along with permissions to access various GitHub features and areas through your GitHub account. The new access token process, initiated by selecting Create an access key here , has the appropriate permissions pre-selected that Blue Ocean requires to access and interact with your GitHub account. |
Scroll down to the end of the page, and select Generate token .
On the resulting Personal access tokens page, copy your newly generated access token.
Back in Blue Ocean, paste the access token into the Your GitHub access token field, and then select Connect .
Your current Jenkins user now has access to your GitHub account and you can now choose your GitHub account/organization and repository. Jenkins registers this credential with the following details for this Jenkins user:
Domain
:
blueocean-github-domain
ID
:
github
Name
:
<jenkins-username>/****** (GitHub Access Token)
Blue Ocean prompts you to choose your GitHub account or an organization you are a member of. You are also asked for the repository containing your Pipeline project.
In the Which organization does the repository belong to? section, select either:
Your GitHub account, to create a Pipeline project for one of your own GitHub repositories or one which you have forked from elsewhere on GitHub.
or
The organization of which you are a member, to create a Pipeline project for a GitHub repository located within this organization.
In the Choose a repository section, select the repository within your GitHub account or organization from which to build your Pipeline project.
If your list of repositories is long, you can use the Search option to filter your results. |
Click Create Pipeline .
Blue Ocean scans your local repository’s branches for a
Jenkinsfile
and starts a Pipeline run for each branch containing a
Jenkinsfile
.
If Blue Ocean does not find a
Jenkinsfile
, you are prompted to create one through the Pipeline editor.
Under the hood, a Pipeline project created through Blue Ocean is actually a "multibranch Pipeline." Therefore, Jenkins looks for the presence of at least one Jenkinsfile in any branch of your repository. |
To create your Pipeline project directly for a Git or Mercurial repository on Bitbucket Cloud, select the Bitbucket Cloud button under Where do you store your code?
In the Connect to Bitbucket section, enter your Bitbucket email address and password into the Username and Password fields.
If you previously configured Blue Ocean to connect to Bitbucket with your email address and password, Blue Ocean takes you directly to the Bitbucket account/team and repository selection steps below.
If you entered these credentials, Jenkins registers them with the following details for this Jenkins user:
Domain
:
blueocean-bitbucket-cloud-domain
ID
:
bitbucket-cloud
Name
:
+<bitbucket-user@email.address>/
(Bitbucket server credentials)
Select Connect and your current/logged in Jenkins user will now have access to your Bitbucket account. You can now choose your Bitbucket account/team and repository.
Blue Ocean prompts you to choose your Bitbucket account or a team you are a member of, as well as the repository containing your project to be built.
In the Which team does the repository belong to? section, select either:
Your Bitbucket account to create a Pipeline project for one of your own Bitbucket repositories, or one which you have forked from elsewhere on Bitbucket.
A team of which you are a member to create a Pipeline project for a Bitbucket repository located within this team.
In the Choose a repository section, select the repository in your Bitbucket account or team from which to build your Pipeline project.
If your list of repositories is long, you can filter this list using the Search option. |
Click
Create Pipeline
.
Blue Ocean scans your local repository’s branches for a
Jenkinsfile
and starts a Pipeline run for each branch containing a
Jenkinsfile
.
If Blue Ocean does not find a
Jenkinsfile
, you are prompted to create one through the Pipeline editor.
Under the hood, a Pipeline project created through Blue Ocean is actually a "multibranch Pipeline." Therefore, Jenkins looks for the presence of at least one Jenkinsfile in any branch of your repository. |
Was this page helpful?
Please submit your feedback about this page through this quick form.
Alternatively, if you don't wish to complete the quick form, you can simply indicate if you found this page helpful?
See existing feedback here.