[JEP-222] Add experimental WebSocket support + Jetty update in Winstone + Remoting 4.0 - #1
[JEP-222] Add experimental WebSocket support + Jetty update in Winstone + Remoting 4.0#1Chi-Song-Owen wants to merge 298 commits into
Conversation
[JENKINS-59631] Fix styling issue in build history table
* Try to execute flyweight tasks on the master * Fix offline behavior, add tests * Remove obsolete TODOs, also check #isAcceptingTasks
[JENKINS-59793] Avoid hanging jobs with faulty SubTasks
The jenkins-slave.xml file has been copied to the windows-slave-installer-module, but a unused (old) copy is still present in the jenkins core.
…pane of the Plugin Manager (#4298) * refs #JENKINS-59665 Fixed sorting for uninstall column of installed in plugin manager * refs #JENKINS-59665 removed test attribute
* Hide password form fields by default * Trying to bypass enforced autocompletion by just having a test field at first Something like onfocus didn't work, you'd tab through form elements and unless you filled in the user name, changing the form field to password would cause it to autocomplete. It looks like, at least in Mac/Firefox, going from plain text to password in the 'oninput' event handler works. The plain text is revealed neither with typing nor pasting. * Update core/src/main/resources/lib/form/password.jelly Co-Authored-By: daniel-beck <daniel-beck@users.noreply.github.com> * Use previously defined value * Make new password form fields opt-out * Add support for redacting form secrets in new password field * Have a password value pre-set in Jelly * Fix method * Fix test by clicking on the button to change the password * Forgot period separator between class and property name
[JENKINS-59508] Sidebar links show full label on hover
Switch from maven-jenkins-dev-plugin to upstream jetty-maven-plugin
Add StandardOpenOption.CREATE flag to create FileChannelWriter to avoid full fs flush and 5sec log operation on creating empty file with CephFS as a storage
* JENKINS-6722 Show slave error status on Dashboard * Update executors.properties
…unds on the plugin side (#3935) * JENKINS-56553 Make proxy config compatible with JCASC * Use DataBoundSetters as other fields are optional * Fix Jelly for ProxyConfiguration * Use default field name now that field matches * Fix validate proxy * Change field type * After review * Update core/src/main/java/jenkins/model/Jenkins.java Co-Authored-By: timja <t.jacomb@kainos.com> * Update core/src/main/java/jenkins/model/Jenkins.java Co-Authored-By: timja <t.jacomb@kainos.com> * Update core/src/main/java/hudson/ProxyConfiguration.java Co-Authored-By: timja <t.jacomb@kainos.com> * Update core/src/main/java/jenkins/model/Jenkins.java Co-Authored-By: timja <t.jacomb@kainos.com> * Update core/src/main/java/jenkins/model/Jenkins.java Co-Authored-By: timja <t.jacomb@kainos.com> * Update core/src/main/java/hudson/ProxyConfiguration.java Co-Authored-By: Oleg Nenashev <o.v.nenashev@gmail.com> * Tweak javadoc * Align fields * Update core/src/main/java/hudson/ProxyConfiguration.java Co-Authored-By: Adrien Lecharpentier <adrien.lecharpentier@gmail.com>
Document workaround for Stapler data binding bug in repeatableProperty
…ling events (#4345) * Rejuvenate log levels * clean up * Reverting the plugin download Co-Authored-By: Oleg Nenashev <o.v.nenashev@gmail.com>
… Fix JavaScript error in Plugin Manager when optional dependency metadata cannot be retrieved (#3904) * [JENKINS-56173] Uncaught TypeError: Cannot read property 'jenkinsPluginMetadata' of undefined * [JENKINS-56173] missing dependencies covers both not installed and not enabled * [JENKINS-56152] i18n: DirectlyDependentPlugins.title / IndirectlyDependentPlugins.title * [JENKINS-56152] replace `version X` with `(X)` * [JENKINS-56152] simplify messages; replace `version X` with `(X)`; use higher instead of later * [JENKINS-56173] Uncaught Exception: TypeError: Cannot read property 'get' of undefined at _createResponder * Update PluginWrapperTest * Switch to descriptive class for plugin version
[JENKINS-42658] - Fix NPE in Agent API when the agent is offline (e.g. retrieving agent version or OS description)
Inlining test-pom into test and removing test-jdk8
…IZABLE, ES_COMPARING_STRINGS_WITH_EQ) (#4379) * fixed Spotbugs issues (SE_COMPARATOR_SHOULD_BE_SERIALIZABLE, ES_COMPARING_STRINGS_WITH_EQ) * replaced wildcard import with specific imports * added missing import * fixed spotbugs issues * removed accidently added import
…stages (#4207) * [JENKINS-59412] Clarify that build history does not include pipeline stages * Clarify that pipelines are merely an example of tasks that may not be listed
Simplify CoreUpdateMonitor/message.properties: changelog.url → jenkins-version.properties
* Add the maintainer checklist to the pull request template * Add checklist items for LTS * Add "Proposed changelog entries" to the pull request template * Pull request template: `Internal: ` prefix is now added automatically by the Core Changelog generator jenkinsci/core-changelog-generator#6 * Apply suggestions from review by @MarkEWaite Co-Authored-By: Mark Waite <mark.earl.waite@gmail.com> Co-authored-by: Mark Waite <mark.earl.waite@gmail.com>
Upload draft Changelog YAMLs to GitHub Release assets
…or-yaml Revert "Upload draft Changelog YAMLs to GitHub Release assets"
…g YAMLs to Release Drafter
… release metadata
[JENKINS-60740] - Rely on GitHub Actions to generate the release draft YAMLs
Release Drafter Fix: Properly inherit the parent config
[JENKINS-60716] Retain causes of a LogRotator failure for diagnosis
* Spotbugs: Fixed comparing strings with equals instead of == * Spotbugs: Do not return null in @nonnull marked method, instead return empty string. * Added Suppress for Spotbugs * Apply suggestions from code review Co-Authored-By: Oleg Nenashev <o.v.nenashev@gmail.com> * fixed javadoc Co-authored-by: Oleg Nenashev <o.v.nenashev@gmail.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit fa2b193. Configure here.
| public ConverterImpl(XStream2 xstream) { super(xstream); } | ||
| @Override protected void callback(UpstreamCause uc, UnmarshallingContext context) { | ||
| if (uc.upstreamCause != null) { | ||
| if (uc.upstreamCauses == null) uc.upstreamCauses = new ArrayList<>(); |
There was a problem hiding this comment.
Legacy upstream cause NPE
High Severity
The UpstreamCause XStream migration callback calls upstreamCauses.add without ensuring the list exists. Legacy serialized builds that only populate upstreamCause can leave upstreamCauses null, causing a null pointer when those records are loaded.
Reviewed by Cursor Bugbot for commit fa2b193. Configure here.
| @Override | ||
| protected void closed(int statusCode, String reason) { | ||
| LOGGER.fine(() -> "closed: " + statusCode + ": " + reason); | ||
| connection.handleClose(); |
There was a problem hiding this comment.
WebSocket CLI null connection
Medium Severity
The WebSocket CLI handler dereferences connection in closed (and binary) without checking it was assigned. If opened fails while creating ServerSideImpl, or the socket closes early, connection stays null and the session callbacks throw instead of shutting down cleanly.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit fa2b193. Configure here.


See JEP-222. Downstream of
jenkinsci/winstone#79+jenkinsci/remoting#357+jenkinsci/jenkins-test-harness#183.Proposed Changelog Entries
Note
High Risk
Touches agent connectivity, remoting, and servlet/WebSocket infrastructure—areas that affect every build and security boundary; Remoting 4.0 also carries plugin/agent compatibility risk.
Overview
Implements JEP-222 experimental WebSocket paths so Jenkins can be reached over HTTP(S) without relying on the TCP agent port or awkward HTTP duplex CLI setups behind reverse proxies.
Inbound agents:
JNLPLaunchergains a WebSocket option; core wires agent connections through the newjenkins.websocketAPIs (with Jetty support via Winstone 5.6). Remoting is bumped to 4.0 (noting the prior 3.x binary break called out in the release notes).CLI: The standalone
jenkins-cli.jaradds-webSocket(Tyrus client, shaded dependencies) and the controller exposes/cli/ws.PlainCLIProtocolis refactored around pluggableOutput/FramedReaderso the same framing works over HTTP and WebSocket; HTTP CLI no longer loads SSH keys unless-sshis used.Alongside that headline work: PR/maintainer template and changelog automation tweaks,
mvn jetty:rundev docs, re-enabled ATH in the Jenkinsfile, queue cancel returning proper HTTP status codes, flyweight tasks preferring the master when unlabeled, and broad hygiene (Jenkins.get()migration, safer extension/queue dispatcher error handling,WORKSPACE_TMP, proxySecretbinding, etc.).Reviewed by Cursor Bugbot for commit fa2b193. Bugbot is set up for automated code reviews on this repo. Configure here.