7665 Commits
Author SHA1 Message Date
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] 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
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
Donghui Wang f44fdc3082 Match job names in global search suggestions (#26690) 2026-10-16 05:25:20 -06: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] 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
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
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
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] 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
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
USJUN 5af872b637 [JENKINS-75310] Fix log recorder level updates (#27065)
* [JENKINS-75310] Fix log recorder level updates

* [JENKINS-75310] Handle removed log recorder targets

* [JENKINS-75310] Avoid repeated streams for descendant targets
2026-10-07 21:31:46 -06:00
renovate[bot] db0e08291b Update dependency io.jenkins.plugins:commons-lang3-api to v3.21.0-122.v6a_ea_4fd34049 (#27493)
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-06 17:05:49 -06:00
renovate[bot] 485086b2eb Update dependency org.jenkins-ci.plugins:junit to v1432 (#27479)
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-04 16:38:44 +01:00
47aca2ba97 Standardise experimental Jenkins pages, make the side panel independently scrollable + make the build bar sticky (#27380)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Mark Waite <mark.earl.waite@gmail.com>
2026-10-04 16:24:57 +01:00
Jan Faracik 846b53f610 Enable new Manage Jenkins UI by default (#26999) 2026-10-03 11:56:24 +01:00
2725fc3a00 Increase minimum required Remoting version from 3176.v207ec082a_8c0 to 3256.3258.v858f3c9a_f69d (#27439)
* Drop support for remoting releases before 2024-08

* Adapt Security3430Test to latest changes

Uses the original changes from @daniel-beck, merged with master branch.

One relevant change for discussion is the switch from IllegalStateException
to IOException in the assertions in the _run method.  I believe that is the
correct change, but would like validation from @daniel-back to be certain.

-                assertThat(itex.getCause(), instanceOf(IllegalStateException.class));
+                assertThat(itex.getCause(), instanceOf(IOException.class));

Testing done:

* Confirmed Security3430Test passes in my development environment

---------

Co-authored-by: Daniel Beck <daniel-beck@users.noreply.github.com>
Co-authored-by: Daniel Beck <1831569+daniel-beck@users.noreply.github.com>
2026-09-27 06:12:26 -06:00
renovate[bot] 70d3bbb786 Update dependency org.jenkins-ci.plugins:junit to v1431 (#27442)
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-09-26 08:04:06 -06:00
Jesse Glick 09393220de Do not persist workspaceDir + buildsDir (#27406) 2026-09-26 08:03:35 -06:00
renovate[bot] f363ae2eea Update dependency org.jenkins-ci.plugins:matrix-project to v928 (#27437)
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-09-25 14:23:44 -06:00
renovate[bot] 47fc3e7735 Update dependency org.jenkins-ci.main:jenkins-test-harness to v2587 (#27436)
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-09-25 14:23:20 -06:00
log0u7 06343cc5d0 Remove dead ".crumb" fallback in CrumbFilter (#27432)
Remove dead .crumb fallback in CrumbFilter

The fallback added in ed0ea631 (JENKINS-12875) discarded its return
value, so the legacy .crumb field name has never been accepted since
2014. The compatibility window it targeted is long expired; delete the
dead code instead of reviving it. Add a test pinning that a valid crumb
under the configured field name is accepted and the same crumb under
".crumb" is rejected.

Fixes #27431
2026-09-25 14:21:19 -06:00
ec61ae721e Reword the -jnlpUrl deprecation warning on JNLP file downloads (#27331)
* Remove the -jnlpUrl deprecation warning from the JNLP file download

Since the 2.440.1 migration guidance, agents launch with -url and -name and
the remoting launcher already logs the deprecation warning when -jnlpUrl is
actually used. The remaining consumer of the JNLP file endpoint is
automation: provisioning tools download jenkins-agent.jnlp to extract the
connection secret before starting the agent. For each such download the
controller logged a warning claiming the agent is connecting with -jnlpUrl,
which is false and sends operators chasing a non-existent problem on the
agent side.

Drop the endpoint-level warning: the actual deprecated launch path warns on
its own, where the message is true.

* Reword the deprecation warning logged on JNLP file downloads

The warning claimed the agent is connecting with the -jnlpUrl argument,
but it is emitted on a plain file download with no agent connection
involved. Agents launch with -url and -name since the 2.440.1 migration
guidance, and the remoting launcher warns on its own when -jnlpUrl is
actually used.

State that the JNLP file endpoint itself is deprecated and point at the
agent documentation, keeping the signal without the misattribution.

---------

Co-authored-by: log0u7 <logout@github.com>
Co-authored-by: Mark Waite <mark.earl.waite@gmail.com>
2026-09-25 14:19:51 -06:00
renovate[bot] a91df32355 Update dependency org.jenkins-ci.plugins:junit to v1428 (#27418)
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-09-21 18:09:13 -06:00
renovate[bot] 545be3a2c8 Update dependency org.jenkins-ci.plugins:script-security to v1429 (#27402)
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-09-20 12:05:08 -06:00
Jan Faracik 81dc9a3e13 Show a 'Success' banner on Manage Jenkins page save (#27097) 2026-09-15 23:16:34 +01:00
Shreyas Madake f9242f3adb Fix OpenSearch XML content-type and add moz:SearchForm (#27364)
Fixes #27210
2026-09-10 04:59:37 -06:00
Mark Waite 98047df8a5 Reduce Windows CI test time by skipping some expensive platform independent tests (#27248) 2026-09-07 19:41:53 +01:00
Alex TumanovandAlex Tumanov c9c331ad78 Restore iconOnly summary link behavior (#27353)
Co-authored-by: Alex Tumanov <6143578+oleksii-tumanov@users.noreply.github.com>
2026-09-07 10:36:58 -06:00
Mark Waite c62f3619db Use assert instead of assume in several tests (#27258)
* Use assertions in test body instead of assumptions in SlaveTest

Failed assumptions silently ignore the test

Failed assertions call us to immediate action

* Use assertEquals instead of assumeTrue in ArgumentListBuilder2Test

* Use assertFalse, not assumeFalse in UpdateCenterPluginInstallTest

Fail the tests if updates.jenkins-ci.org cannot be resolved rather than
quietly skipping the tests.  If our tests need to be resilient to DNS
lookup failures, there are many other places that need to be changed.

* Assert rather than assume white listed classes include LinkedListMultimap in ClassFilterImplTest

* Remove assume that checked if tests are running in Jetty servlet context in SystemPropertiesTest

Tests always run with Jetty servlet context.

* Replace assume with assert in FilePathTest

If the assumption were not satisfied, the test would be skipped insted
of failing.

Better to fail the test explicitly than to quietly skip the test and
rely on review of the results to detect the test was skipped.

Testing done:

* Confirmed the test continues to pass
2026-09-06 14:29:49 -06:00
renovate[bot] 7641343d80 Update dependency org.jenkins-ci.plugins:script-security to v1415 (#27330)
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-09-03 15:22:56 -06:00
renovate[bot] 2bb05317b0 Update dependency org.jenkins-ci.plugins:junit to v1425 (#27329)
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-09-03 15:22:45 -06:00
renovate[bot] 9cd599fba8 Update dependency org.jenkins-ci.plugins:bouncycastle-api to v2.30.1.85.2-304.v4b_5b_62e59a_a_7 (#27320)
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-09-03 15:22:17 -06:00
renovate[bot] 90d0678179 Update dependency org.jenkins-ci.main:jenkins-test-harness to v2582 (#27300)
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-09-03 15:19:44 -06:00
Daniel Beck 28cda9ac51 [SECURITY-4025] 2026-08-25 11:15:36 +00:00
Daniel Beck 6244ebadf5 [SECURITY-4032] 2026-08-25 11:15:31 +00:00
Daniel Beck 317516ddfa [SECURITY-3981] 2026-08-25 11:15:26 +00:00
Daniel Beck fed1b08ad1 [SECURITY-4015] 2026-08-25 11:15:20 +00:00
Daniel Beck 65a80524f9 [SECURITY-3967] 2026-08-25 11:15:15 +00:00
Daniel Beck cf08096038 [SECURITY-3908] 2026-08-25 11:15:10 +00:00
Daniel Beck 0d731367e0 [SECURITY-3972] 2026-08-25 11:15:05 +00:00
Daniel Beck 69b9bdc141 [SECURITY-4016] 2026-08-25 11:14:59 +00:00
Daniel Beck 650576ea8d [SECURITY-4006] 2026-08-25 11:14:54 +00:00
Kevin-CB 56fe87efb7 [SECURITY-3879] 2026-08-25 11:14:49 +00:00