Skip to content

WIP: Test parallel user scanning and more - #27096

Closed
MarkEWaite wants to merge 50 commits into
jenkinsci:masterfrom
MarkEWaite:Aardvark-Octopus
Closed

WIP: Test parallel user scanning and more#27096
MarkEWaite wants to merge 50 commits into
jenkinsci:masterfrom
MarkEWaite:Aardvark-Octopus

Conversation

@MarkEWaite

Copy link
Copy Markdown
Contributor

WIP: Test parallel user scanning and more

Test master branch and several pull requests:

Testing done

  • Created a quick build and confirmed that Manage Jenkins / Security is displayed correctly with 2 password strength rules enabled

Screenshots (UI changes only)

Before

After

Proposed changelog entries

  • N/A

Proposed changelog category

/label skip-changelog

Proposed upgrade guidelines

N/A

Submitter checklist

  • The issue, if it exists, is well-described.
  • The changelog entries and upgrade guidelines are appropriate for the audience affected by the change (users or developers, depending on the change) and are in the imperative mood (see examples). Fill in the Proposed upgrade guidelines section only if there are breaking changes or changes that may require extra steps from users during upgrade.
  • There is automated testing or an explanation as to why this change has no tests.
  • New public classes, fields, and methods are annotated with @Restricted or have @since TODO Javadocs, as appropriate.
  • New deprecations are annotated with @Deprecated(since = "TODO") or @Deprecated(forRemoval = true, since = "TODO"), if applicable.
  • UI changes do not introduce regressions when enforcing the current default rules of Content Security Policy Plugin. In particular, new or substantially changed JavaScript is not defined inline and does not call eval to ease future introduction of Content Security Policy (CSP) directives (see documentation).
  • For dependency updates, there are links to external changelogs and, if possible, full differentials.
  • For new APIs and extension points, there is a link to at least one consumer.

Desired reviewers

N/A

Before the changes are marked as ready-for-merge:

Maintainer checklist

  • There are at least two (2) approvals for the pull request and no outstanding requests for change.
  • Conversations in the pull request are over, or it is explicit that a reviewer is not blocking the change.
  • Changelog entries in the pull request title and/or Proposed changelog entries are accurate, human-readable, and in the imperative mood.
  • Proper changelog labels are set so that the changelog can be generated automatically.
  • If the change needs additional upgrade steps from users, the upgrade-guide-needed label is set and there is a Proposed upgrade guidelines section in the pull request title (see example).
  • If it would make sense to backport the change to LTS, be a Bug or Improvement, and either the issue or pull request must be labeled as lts-candidate to be considered.

BobDu and others added 19 commits July 10, 2026 21:26
…n-in and sign-up pages

The password fields on the login and self-registration pages get an eye button to reveal the typed password, and show an in-field indicator while Caps Lock is on. The sign-up page's previous "Show" checkbox is replaced by the same toggle, and both pages share the same implementation.

The built-in password reveal control in Edge and the native WebKit Caps Lock indicator are suppressed on these fields in favor of the cross-browser controls.

Signed-off-by: BobDu <i@bobdu.cc>
by default

Increase @exported visibility to 2 on PluginWrapper's shortName, url,
version, active, enabled, and hasUpdate, and export displayName (the
non-deprecated replacement for getLongName()), so these fields are no
longer dropped when nested under PluginManager.plugins at the API's
default depth.

Issue jenkinsci#21047
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
rssChangelog previously walked every build and could produce very large
feeds. Cap at 20 entries by default, with overrides via system property
or the max query parameter.

Fixes jenkinsci#14784
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Amends pull request:

* jenkinsci#27038

Without this change, the "Manage Jenkins" / "Security" page fails to
open and reports that the config.jelly cannot be parsed.

Jenkins 2.573 did not include the pull request.  I seem to have merged
it after the 2.573 build started.

Testing done:

* Confirmed that "Manage Jenkins" / "Security" on Jenkins 2.573 opens successfully
* Confirmed that "Manage Jenkins" / "Security" on master branch does not open
* Confirmed that "Manage Jenkins" / "Security" opens successfully with this change
…, 'fix/jenkins-75310-log-recorder-level', 'fix/sortable-date-12am-midnight', 'issue-26633', 'issue/21047', 'login-page-password-ux', 'perf/parallel-user-scanning', 'renovate/org.bouncycastle-bcprov-jdk18on-1.x', 'renovate/org.jenkins-ci.plugins-matrix-auth-3.x', 'renovate/postcss-8.x', 'renovate/softprops-action-gh-release-3.x' and 'revert-password-complexity-rule' into Aardvark-Octopus
Copilot AI review requested due to automatic review settings July 14, 2026 22:53
@MarkEWaite MarkEWaite added the work-in-progress The PR is under active development, not ready to the final review label Jul 14, 2026
@comment-ops-bot comment-ops-bot Bot added skip-changelog Should not be shown in the changelog labels Jul 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR is a WIP aggregation of multiple changes across Jenkins core, WAR resources, frontend assets, and CI configuration, including performance work (parallel user scanning), UI enhancements (password visibility toggle + Caps Lock indicator), API/export tweaks, feed-size limiting, logging behavior fixes, and dependency bumps.

Changes:

  • Add password-field UI improvements (toggle + Caps Lock indicator) and consolidate/standardize branding components/styles across sign-in/sign-up/about pages.
  • Parallelize User.AllUsers.scanAll() and add/extend tests for user scanning, upstream causes, RSS changelog limits, pluginManager API JSON, and log recorder behavior.
  • Update dependencies (PostCSS, matrix-auth, BouncyCastle, softprops/action-gh-release) and adjust CI pipeline/test selection (currently in a way that reduces coverage).

Reviewed changes

Copilot reviewed 39 out of 42 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
yarn.lock Updates the locked PostCSS version/checksum.
package.json Bumps PostCSS dependency to 8.5.19.
webpack.config.js Adds a new pages/sign-in JS bundle entry.
src/main/js/util/password-field.js Adds shared JS for password visibility toggle + Caps Lock indicator.
src/main/js/pages/sign-in/index.js Initializes password-field behavior on the login page bundle.
src/main/js/pages/register/index.js Uses the shared password-field behavior on the registration page bundle.
src/main/scss/pages/_sign-in-register.scss Refactors sign-in/register layout and adds styles for the new password controls.
src/main/scss/pages/_about.scss Switches About page branding styling to the shared branding component.
src/main/scss/components/_index.scss Exposes the new branding component SCSS.
src/main/scss/components/_branding.scss Introduces shared “app-branding” component styling.
src/main/scss/abstracts/_theme.scss Adjusts --page-inset theme variable.
core/src/main/resources/lib/layout/branding.jelly Adds a reusable Jelly fragment for branding markup.
core/src/main/resources/jenkins/model/SimplePageDecorator/simple-branding.jelly Switches sign-in/register branding to the shared l:branding component.
core/src/main/resources/hudson/AboutJenkins/index.jelly Switches About Jenkins branding to the shared l:branding component.
core/src/main/resources/jenkins/model/Jenkins/login.jelly Adds sign-in JS bundle and new password toggle/Caps Lock indicator markup.
core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup.jelly Replaces “Show” checkbox with toggle button + Caps Lock indicator markup.
core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup_zh_TW.properties Removes unused “Show” translation string.
core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup_pt_BR.properties Removes unused “Show” translation string.
core/src/main/resources/hudson/security/HudsonPrivateSecurityRealm/signup_it.properties Removes unused “Show” translation string.
war/src/main/resources/images/symbols/eye-outline.svg Adds new eye icon for password visibility UI.
war/src/main/resources/images/symbols/caps-lock.svg Adds new Caps Lock icon for the indicator UI.
war/src/main/webapp/scripts/sortable.js Fixes 12 AM sorting by mapping 12 AM to hour 0.
core/src/main/resources/jenkins/security/BasicPasswordComplexityRule/config.jelly Simplifies special-character text to avoid Jelly parsing issues.
core/src/main/java/hudson/PluginWrapper.java Exports additional plugin fields at default API depth via @Exported(visibility = 2).
test/src/test/java/hudson/PluginManagerTest.java Adds test coverage for /pluginManager/api/json default-depth plugin fields.
war/pom.xml Bumps bundled matrix-auth plugin version to 3.3.
test/pom.xml Updates matrix-auth test dependency version; also sets <test> property (restricts tests).
core/pom.xml Sets <test> property (restricts tests).
cli/pom.xml Sets <test> property (restricts tests) and bumps bcprov-jdk18on to 1.85.
.github/workflows/publish-release-artifact.yml Updates softprops/action-gh-release pin to v3.0.2 commit.
core/src/main/java/hudson/model/User.java Parallelizes user directory scanning and unmarshalling during startup.
test/src/test/java/hudson/model/UserTest.java Adds a regression test for scanAll with malformed user configs.
core/src/main/java/hudson/model/Job.java Caps RSS changelog entries by default, adds overrides via system property and ?max=.
test/src/test/java/hudson/model/RSSTest.java Adds tests for RSS changelog entry limiting and overrides.
core/src/main/java/hudson/model/Cause.java Makes upstream cause counts lazy to avoid NPE after restart/deserialization.
test/src/test/java/hudson/model/CauseTest.java Adds local-data regression test for upstream cause counts on load.
test/src/test/resources/hudson/model/CauseTest/jobs/upstream/builds/2/build.xml Adds local test build data for upstream cause load regression.
test/src/test/resources/hudson/model/CauseTest/jobs/downstream/builds/2/build.xml Adds local test build data for upstream cause load regression.
core/src/main/java/hudson/logging/LogRecorder.java Fixes log recorder level updates when changing to less-verbose levels.
test/src/test/java/hudson/logging/LogRecorderManagerTest.java Adds regression tests for log recorder level update behaviors.
test/src/test/java/hudson/security/HudsonPrivateSecurityRealmTest.java Adds smoke tests asserting new password UI controls render on login/signup pages.
Jenkinsfile Reduces build matrix + removes ATH stage and adds replay-only comments (reduces CI coverage).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread core/pom.xml
Comment on lines +46 to +47
<!-- Intentionally run only one test to reduce cycle time -->
<test>EnvVarsTest</test>
Comment thread cli/pom.xml
Comment on lines +21 to +22
<!-- Intentionally run only one test to reduce cycle time -->
<test>QuotedStringTokenizerTest</test>
Comment thread test/pom.xml
Comment on lines +55 to +56
<!-- Intentionally run only one test to reduce cycle time -->
<test>hudson.AboutJenkinsTest</test>
Comment thread Jenkinsfile
Comment on lines 16 to 19
def axes = [
platforms: ['linux', 'windows'],
jdks: [21, 25],
platforms: ['linux'],
jdks: [21],
]
Comment thread Jenkinsfile
Comment on lines +127 to +129
// Only use with replay, not with a commit
// sh 'curl -O https://home.markwaite.net/~mwaite/pom.patch && git apply pom.patch && rm pom.patch && git diff'
// mavenOptions.add(0, "-Dignore.dirt")
Comment thread Jenkinsfile
Comment on lines +131 to +132
// Only use with replay, not with a commit
// sh 'git checkout -- */pom.xml'
Comment thread Jenkinsfile
Comment on lines 220 to 222
builds.failFast = failFast
parallel builds
infra.maybePublishIncrementals()
@MarkEWaite

Copy link
Copy Markdown
Contributor Author

Closing because the incremental build is available and being used in pull requests:

@MarkEWaite MarkEWaite closed this Jul 15, 2026
@MarkEWaite
MarkEWaite deleted the Aardvark-Octopus branch July 15, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Should not be shown in the changelog work-in-progress The PR is under active development, not ready to the final review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants