38788 Commits
Author SHA1 Message Date
Jenkins Release Bot c5f59e8b56 [maven-release-plugin] prepare for next development iteration 2026-10-20 06:14:09 +00:00
Jenkins Release Bot 9626398d75 [maven-release-plugin] prepare release jenkins-2.587 jenkins-2.587 2026-10-20 06:14:02 +00:00
renovate[bot] 4b69cbfb81 Update dependency vitest to v5.0.5 (#27566)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-18 22:13:27 -06:00
renovate[bot] eb39c49a43 Update dependency jsdom to v30.1.3 (#27564)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-18 22:13:14 -06:00
renovate[bot] 5b79398f12 Update dependency org.ow2.asm:asm to v9.11.1 (#27563)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-18 22:13:00 -06:00
Qingyuan Wang ac92f88137 Clarify quiet-down -block help text regarding Pipeline jobs (#27556)
The -block option of the quiet-down CLI command does not wait for
running Pipeline jobs, because they are resumable and pause at the end
of their current step. The usage text did not mention this, which led
users to report the behavior as a bug. Clarify the help text.
2026-10-18 06:51:53 -06:00
Qingyuan Wang ada8baaa7d Fix ArtifactArchiver javadoc: patterns must be comma-separated (#27557)
Fix ArtifactArchiver javadoc to say comma-separated patterns

Whitespace is no longer accepted as a pattern separator: FilePath
validation rejects it with an explicit error message. The field
javadoc still described the list as comma- or space-separated, and the
excludes javadoc pointed at Ant semantics without noting the stricter
separator. Align the javadoc with the enforced behavior.
2026-10-18 06:51:38 -06:00
renovate[bot] f5d0dcb8ab Update dependency postcss to v8.5.30 (#27554)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:28:34 -06:00
renovate[bot] cc4774ba6c Update dependency org.jenkins-ci.plugins:script-security to v1436 (#27552)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:27:16 -06:00
renovate[bot] a8a4c28aea Update dependency org.jenkins-ci.plugins:junit to v1442 (#27551)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:27:05 -06:00
renovate[bot] d24f5f7feb Update dependency io.jenkins.plugins:design-library to v483 (#27550)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:26:53 -06:00
renovate[bot] c8e85d25a8 Update Node.js to v24.22.0 (#27549)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:26:36 -06:00
renovate[bot] 123d5f60ff Update dependency io.jenkins.plugins:plugin-util-api to v7.1403.vd380b_c42e90c (#27548)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:26:25 -06:00
renovate[bot] b61ee88d37 Update dependency vitest to v5.0.4 (#27547)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-16 05:26:14 -06:00
Kanhaiya76618 d73a34308c Canonicalize cached label expressions to share load statistics (#27428)
* Canonicalize cached label expressions to share load statistics

Fixes #27403

* Deduplicate label expressions in separate map and preserve raw aliases
2026-10-16 05:26:03 -06:00
Adarsh SinghandCopilot Autofix powered by AI c3ecfb04ea fix(ui): show concise error on form field validation failure during page load (#26818)
* fix(ui): show concise error on form field validation failure during page load

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix(ui): remove stray brace introduced by review suggestion

* test(ui): assert concise message when form validation returns HTTP 500

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-16 05:25:45 -06:00
Donghui Wang f44fdc3082 Match job names in global search suggestions (#26690) 2026-10-16 05:25:20 -06:00
Mark Waite 2d99bcf828 Revert "Update dependency commons-codec:commons-codec to v1.23.0" (#27542)
* Revert "Update dependency commons-codec:commons-codec to v1.23.0 (#27530)"

This reverts commit 2e5e5b7313.

* Do not upgrade to Apache Commons Codec 1.23.0

Needs a new release that fixes issue:

* https://github.com/jenkinsci/jenkins/issues/27539
2026-10-15 13:00:51 +01:00
renovate[bot] 1e6ac398bc Update dependency org.jenkins-ci.plugins:junit to v1438 (#27537)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 16:39:17 -06:00
renovate[bot] c5f3611032 Update dependency org.jenkins-ci.plugins:credentials to v1514 (#27536)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 16:39:04 -06:00
renovate[bot] 5cdce346ee Update dependency prettier to v3.9.10 (#27535)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 16:38:51 -06:00
renovate[bot] 8e2f5eb95d Update dependency org.jenkins-ci.plugins:bouncycastle-api to v2.30.1.86.2-310.v4655f6742752 (#27533)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-13 16:38:33 -06:00
5bedd4759f Keep ANSI colours in the live console after a pause in output (#27424)
* Keep console annotator state across empty progressive log chunks

The streaming progressiveHtml response only includes consoleAnnotator
in its metadata when there is new text to render. When a poll returns
no new output, the client overwrote its stored state with undefined and
stopped sending X-ConsoleAnnotator, so every later chunk was rendered by
a fresh annotator: AnsiColor escapes appeared raw and Timestamper
formatting was lost until the page was reloaded.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Compare offsets to detect an empty chunk and add a test

An empty chunk is one where the requested start equals the returned end,
which does not depend on how the annotator state is transported. Adds
src/test/js/progressive-text.test.js covering both an empty poll and a
poll with new output.

Co-authored-by: Jakob Ackermann <17931887+das7pad@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Jakob Ackermann <17931887+das7pad@users.noreply.github.com>
Co-authored-by: Kris Stern <88480540+krisstern@users.noreply.github.com>
2026-10-13 16:38:14 -06:00
Jenkins Release Bot 76f1e25d73 [maven-release-plugin] prepare for next development iteration 2026-10-13 06:10:37 +00:00
Jenkins Release Bot 8534fcc912 [maven-release-plugin] prepare release jenkins-2.586 jenkins-2.586 2026-10-13 06:10:31 +00:00
renovate[bot] 94b7f5491a Update actions/create-github-app-token action to v3.3.0 (#27534)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-12 20:38:30 -06:00
renovate[bot] 2e5e5b7313 Update dependency commons-codec:commons-codec to v1.23.0 (#27530)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-12 12:12:21 -06:00
renovate[bot] 1688d3944b Lock file maintenance (#27528)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-12 12:12:07 -06:00
Jan Faracik 86f54628d2 Standardise shadows and focus rings for controls (#27527) 2026-10-12 12:20:15 +01:00
Jan Faracik 1c9bbfc726 Remove Manage Jenkins breadcrumb menu (#27529) 2026-10-12 12:19:55 +01:00
Jan Faracik 961bec5def Update User settings pages interface (#27526) 2026-10-12 08:24:52 +01:00
Rauneet Singh 4386cf394a Clean up obsolete Java version checks in tests (#27523) 2026-10-11 08:58:03 +01:00
renovate[bot] 379584d636 Update dependency org.jenkins-ci.plugins:junit to v1437 (#27525)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 21:23:59 -06:00
renovate[bot] 7f267af0fc Update dependency io.jenkins.plugins:caffeine-api to v3.3.0-210.v71b_2985ce530 (#27517)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 21:23:47 -06:00
renovate[bot] e805234f9d Update dependency eslint to v10.12.0 (#27516)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 21:23:34 -06:00
renovate[bot] 2be7dc1c6e Update dependency vite to v8.3.3 (#27515)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 21:23:21 -06:00
renovate[bot] 3683e4c52a Update dependency jsdom to v30.1.2 (#27512)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 21:23:09 -06:00
Daniel BeckandDaniel Beck 0ae952b81c Add support for hudson.model.Failure in CLI error output (#27340)
* Add support for hudson.model.Failure in CLI error output

* Fix Javadoc

* confirm the "unexpected" message does not show

* Adapt tests to changed behavior

---------

Co-authored-by: Daniel Beck <daniel-beck@users.noreply.github.com>
2026-10-10 21:22:55 -06:00
Rauneet SinghandTim Jacomb 8572a213c4 Run ATH tests on Java 25 in CI (#27511)
Co-authored-by: Tim Jacomb <21194782+timja@users.noreply.github.com>
2026-10-10 22:14:30 +01:00
renovate[bot] 7e0308a058 Update babel monorepo to v8.0.7 (#27524)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:16:28 -06:00
renovate[bot] 6e7c1aab42 Update actions/upload-artifact action to v7.0.2 (#27522)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:16:12 -06:00
renovate[bot] 211d7188f1 Update dependency org.jenkins-ci.plugins:script-security to v1433 (#27521)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:15:55 -06:00
renovate[bot] 0e91d1da6b Update release-drafter/release-drafter action to v7.10.0 (#27519)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:15:41 -06:00
renovate[bot] 08058c51af Update dependency postcss-preset-env to v11.6.1 (#27518)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:15:28 -06:00
renovate[bot] 86a79604c1 Update dependency postcss to v8.5.29 (#27514)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:14:40 -06:00
renovate[bot] 8bd7e80a41 Update dependency org.jenkins-ci.plugins:bouncycastle-api to v2.30.1.86.1-306.vfc711fa_36d5f (#27513)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:14:18 -06:00
renovate[bot] 7d007b4565 Update dependency handlebars to v4.7.10 [SECURITY] (#27510)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-10 10:14:01 -06:00
Somesh Kumar Singh 8a98cbdf9c Warn about unsafe authorization strategy (#27499)
Issue #27465: warn about unsafe authorization strategy
2026-10-10 10:13:46 -06:00
Aitor Moya Lopez d84f69e91c Propagate readOnlyMode into all dropdownDescriptorSelector fragments in core (#27167)
* Propagate readOnlyMode into SCM Checkout Strategy descriptor config

f:dropdownDescriptorSelector renders its selected descriptor's config.jelly
lazily via AJAX (lib/form/dropdownDescriptorSelector.jelly), and only
variables listed in its `capture` attribute are visible to that lazily
rendered fragment. hudson/model/Job/configure.jelly sets readOnlyMode for
the whole config page, but lib/hudson/project/config-scm.jelly's call for
scmCheckoutStrategy didn't capture it, so a Job's SCM Checkout Strategy
config fragment was not disabled for read-only viewers (Item.READ +
Item.EXTENDED_READ, no Item.CONFIGURE), even though every other field on
the page correctly disables in that case.

This mirrors the same gap that was originally found and fixed in
cloudbees-folder-plugin (JENKINS-62218,
jenkinsci/cloudbees-folder-plugin#747) and reverted there since it's a
core issue affecting every Job configuration page, not just folders. Part
of the JENKINS-12548 read-only system configuration browsing epic
(JEP-224). No Jira ticket filed yet for this specific core gap.

* Propagate readOnlyMode to remaining dropdownDescriptorSelector fragments

f:dropdownDescriptorSelector defers rendering of every non-selected
descriptor's config.jelly/config.groovy via l:renderOnDemand, which only
forwards variables named in its `capture` attribute into that later
AJAX-rendered fragment. readOnlyMode (JEP-224, JENKINS-12548) is not
forwarded by default, so a viewer with Item.EXTENDED_READ but not
Item.CONFIGURE can get back a fully editable fragment for any option other
than the currently selected one, even though the rest of the page correctly
disables.

The gap was first found and fixed for the SCM Checkout Strategy dropdown on
Job/configure.jelly (previous commit, also reported against
cloudbees-folder-plugin#747 / JENKINS-62218 and reverted there as a core
issue). Review of that fix pointed out the bug is generic to
dropdownDescriptorSelector, not specific to SCM Checkout Strategy. This
commit closes the remaining Job/agent-configuration-scoped call sites found
by auditing all *.jelly and *.groovy usages of the tag in core:

- HudsonPrivateSecurityRealm/config.jelly (Password Complexity Rule)
- DelegatingComputerLauncher/config.jelly and DumbSlave/configure-entries.jelly
  (agent Launch method, Availability/retention strategy)
- Maven/config.jelly (Settings file, Global Settings file build-step config)
- GlobalFingerprintConfiguration/config.jelly (Fingerprint Storage Engine)
- BuildDiscarderProperty/config-details.jelly and
  SimpleGlobalBuildDiscarderStrategy/config.jelly (Discard old builds strategy,
  at both the per-job and global-default nesting levels)
- GlobalMavenConfig/config.groovy (default settings/global settings provider)
- ViewsTabBar/GlobalConfigurationImpl/config.groovy (Views Tab Bar)
- GlobalCrumbIssuerConfiguration/config.groovy (Crumb Issuer)

hudson/model/MyViewsProperty/config.jelly (Views Tab Bar on a user's own
account page) was deliberately left out: that page requires full
Jenkins.ADMINISTER and never sets readOnlyMode in its render chain, so it is
not an instance of this bug.

A further instance of this same gap exists on the "Manage Jenkins > Security"
page (Security Realm / Authorization Strategy / Markup Formatter selectors),
reachable with only Overall.SYSTEM_READ. That one is being reported through
the Jenkins Security Team's private disclosure process instead of here, since
it can expose an editable Security Realm/Authorization Strategy fragment to a
low-privilege viewer -- a permission-escalation-adjacent issue rather than a
plain read-only-UI gap.

Adds a regression test (SCMCheckoutStrategyReadOnlyModeTest) that registers a
throwaway SCMCheckoutStrategy with a real editable field, triggers the same
renderOnDemand() JS a browser fires when switching the dropdown, and asserts
the resulting fragment is rendered as the standard read-only N/A placeholder
rather than an editable input.

* Propagate readOnlyMode to GlobalSecurityConfiguration's dropdownDescriptorSelector calls

Applies the same fix as the previous commit to the last remaining
dropdownDescriptorSelector call sites in core: Security Realm, Authorization,
and Markup Formatter on hudson/security/GlobalSecurityConfiguration/index.groovy
("Manage Jenkins > Security", reachable with only Overall.SYSTEM_READ).

This was initially held back to verify it wasn't a privilege-escalation risk
before publishing: GlobalSecurityConfiguration#configure() unconditionally
calls j.checkPermission(Jenkins.ADMINISTER) as the first line, before any
submitted JSON is read, so a forged configSubmit POST from a SYSTEM_READ-only
user is rejected server-side (AccessDeniedException3) regardless of what the
UI rendered; the Save/Apply buttons are also only rendered inside
l.isAdmin(). The lazily-rendered fragment itself never carries live secrets
either, since dropdownDescriptorSelector renders non-selected options with
instance=null. Confirmed the same double gate (checkPermission(CONFIGURE) in
doConfigSubmit) exists for the other already-fixed call sites, so this is the
same severity class as the rest of the change: a read-only-mode UI/UX gap,
not a write-path vulnerability.

Adds a regression test (GlobalSecurityConfigurationReadOnlyModeTest) covering
this Groovy-view, SYSTEM_READ-scoped rendering path, following the same
pattern as SCMCheckoutStrategyReadOnlyModeTest: register a throwaway
AuthorizationStrategy with a real editable field, trigger the same
renderOnDemand() JS a browser fires when switching the dropdown, and assert
the fragment renders as the standard read-only N/A placeholder.

* Propagate readOnlyMode once in dropdownDescriptorSelector taglib, not per caller

Per jtnord's review on #27167: rather than requiring every caller of
f:dropdownDescriptorSelector to pass capture="readOnlyMode" (12 call
sites in core alone, plus any plugin using the same taglib), fix it
once in the taglib itself.

lib/form/dropdownDescriptorSelector.jelly already always captures
"descriptor" and "it" for the lazily rendered l:renderOnDemand
fragment regardless of what the caller's capture attribute lists.
readOnlyMode now joins that same always-captured set, so read-only
mode propagates into every lazily loaded descriptor fragment
ecosystem-wide without any caller changes.

This reverts the 12 per-callsite capture="readOnlyMode" additions
from the previous commits on this branch and updates the two
JenkinsRule/HtmlUnit regression tests' documentation to point at the
new, single fix location. Both tests still pass unchanged, since they
exercise the real page end-to-end rather than depending on any
caller's capture attribute.

* Add a taglib-level regression test for dropdownDescriptorSelector

The two existing regression tests on this branch (SCMCheckoutStrategy,
GlobalSecurityConfiguration) exercise real pages end-to-end through
JenkinsRule + MockAuthorizationStrategy, which only covers 2 of the
now-generic fix's many callers and requires standing up a full
permission model to prove a taglib-level behavior.

Following this project's existing convention for testing this exact
taglib family (lib/form/DropdownListTest, lib/layout/RenderOnDemandTest,
lib/form/RowVisibilityGroupTest, the latter of which already reuses a
single config.jelly across sibling Descriptor implementations), add a
lean unit test that exercises f:dropdownDescriptorSelector directly via
a synthetic RootAction, with no security realm involved. The fixture's
test1.jelly sets readOnlyMode directly and deliberately omits
capture="readOnlyMode", proving the taglib itself is responsible for
propagating it into the lazily-rendered fragment -- which by
construction covers every current and future caller, not just the two
pages exercised by the other tests.

* Empty commit to retrigger CI
2026-10-10 10:13:29 -06:00
Mark Waite cd2a077aed Use ASM 9.11 to silence security scanners (#27507) 2026-10-10 08:14:19 +01:00