Skip to content
This repository was archived by the owner on Feb 10, 2026. It is now read-only.

Update Datical fork from jenkinsci fork#3

Open
SteveDonie wants to merge 1305 commits into
Datical:masterfrom
jenkinsci:master
Open

Update Datical fork from jenkinsci fork#3
SteveDonie wants to merge 1305 commits into
Datical:masterfrom
jenkinsci:master

Conversation

@SteveDonie
Copy link
Copy Markdown

No description provided.

gounthar and others added 30 commits June 24, 2024 21:52
…ols.bom-bom-2.440.x-3143.v347db_7c6db_6e

Bump io.jenkins.tools.bom:bom-2.440.x from 3135.v6d6c1f6b_3572 to 3143.v347db_7c6db_6e
Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 4.83 to 4.84.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](jenkinsci/plugin-pom@plugin-4.83...plugin-4.84)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…i.plugins-plugin-4.84

Bump org.jenkins-ci.plugins:plugin from 4.83 to 4.84
Bumps [io.jenkins.tools.bom:bom-2.440.x](https://github.com/jenkinsci/bom) from 3157.vb_3e8b_8a_d185d to 3180.vc1df4d5b_8097.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.440.x
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.0.0 to 2.1.1.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](crowdin/github-action@v2.0.0...v2.1.1)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [io.jenkins.tools.bom:bom-2.440.x](https://github.com/jenkinsci/bom) from 3208.vb_21177d4b_cd9 to 3221.ve8f7b_fdd149d.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.440.x
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…ols.bom-bom-2.440.x-3221.ve8f7b_fdd149d

Bump io.jenkins.tools.bom:bom-2.440.x from 3208.vb_21177d4b_cd9 to 3221.ve8f7b_fdd149d
…din/github-action-2.1.1

Bump crowdin/github-action from 2.0.0 to 2.1.1
Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 4.85 to 4.86.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](jenkinsci/plugin-pom@plugin-4.85...plugin-4.86)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Bruno Verachten <gounthar@gmail.com>
Bumps [io.jenkins.tools.bom:bom-2.440.x](https://github.com/jenkinsci/bom) from 3258.vcdcf15936a_fd to 3276.vcd71db_867fb_2.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.440.x
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…ols.bom-bom-2.440.x-3276.vcd71db_867fb_2

Bump io.jenkins.tools.bom:bom-2.440.x from 3258.vcdcf15936a_fd to 3276.vcd71db_867fb_2
Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 4.86 to 4.87.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](jenkinsci/plugin-pom@plugin-4.86...plugin-4.87)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…i.plugins-plugin-4.87

Bump org.jenkins-ci.plugins:plugin from 4.86 to 4.87
Bumps [io.jenkins.tools.bom:bom-2.440.x](https://github.com/jenkinsci/bom) from 3289.v3ff9637cd241 to 3307.v2769886db_63b_.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.440.x
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…ols.bom-bom-2.440.x-3307.v2769886db_63b_

Bump io.jenkins.tools.bom:bom-2.440.x from 3289.v3ff9637cd241 to 3307.v2769886db_63b_
Bumps [io.jenkins.tools.bom:bom-2.440.x](https://github.com/jenkinsci/bom) from 3307.v2769886db_63b_ to 3334.v18e2a_2f48356.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.440.x
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
…ols.bom-bom-2.440.x-3334.v18e2a_2f48356

Bump io.jenkins.tools.bom:bom-2.440.x from 3307.v2769886db_63b_ to 3334.v18e2a_2f48356
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](crowdin/github-action@v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…din/github-action-2.1.2

Bump crowdin/github-action from 2.1.1 to 2.1.2
mPokornyETM and others added 30 commits April 13, 2026 08:36
- Update LICENSE.txt with current maintainer (Martin Pokorny 2022-2026)
- Replace verbose box-style headers with short MIT reference
- Replace full MIT license headers with short reference
- All files now point to LICENSE.txt for full copyright info

Fixes #981
Bumps [io.jenkins.tools.bom:bom-2.528.x](https://github.com/jenkinsci/bom) from 6237.v4da_61a_4a_19e5 to 6269.v7a_159d68a_366.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.528.x
  dependency-version: 6269.v7a_159d68a_366
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
When a new resource is added via createResourceWithLabel() or
addResource(), waiting jobs now automatically pick it up instead
of remaining blocked.

Changes:
- Invalidate cachedCandidates and process waiting pipeline contexts
  when adding new resources (inside synchronized block for atomicity)
- Call scheduleQueueMaintenance() to notify freestyle jobs
- Add refreshQueue() public method for users who modify labels on
  existing resources (label changes don't auto-trigger re-evaluation)
- Add documentation explaining dynamic resource behavior and limitations

Fixes #892
See also: JENKINS-46744
Document how to lock resources for individual pipeline stages
using the options block, allowing long-running builds to only
hold resources during the stages that need them.

Fixes #8
* Add updateLock pipeline step for resource management

This step allows pipelines to dynamically manage lockable resources:
- Create new resources (createResource: true)
- Delete existing resources (deleteResource: true)
- Modify labels (setLabels, addLabels, removeLabels)
- Set notes (setNote)

Based on the original design from PR #305 by @gaspardpetit.

Fixes #305

* Remove @SInCE TODO - not applicable for plugins

* Add updateLock step documentation to README

* Add 'reason' parameter to lock() step

Allows users to specify a reason when locking a resource, displayed in
the lockable resources UI while the resource is locked.

Usage:
  lock(resource: 'my-resource', reason: 'Running integration tests') {
      // ...
  }

Features:
- New 'reason' parameter on lock() step
- Reason displayed in UI status column while locked
- Reason cleared automatically when resource is unlocked
- Works with label-based and resource-based locking
- Reason preserved when lock request is queued
- Environment variable 'resourceLockReason' available in groovy scripts

Fixes #520

* feat: Add reason parameter to reserve button

When a user reserves a resource via the Reserve button, they are now
prompted to provide a reason. The reason is:
- Stored in the lockReason field (shared with lock() step)
- Displayed in the resources table
- Cleared when the resource is unreserved

Changes:
- LockableResource: Add reserve(userName, reason) overload
- LockableResourcesManager: Add reserve(resources, userName, reason)
- doReserve: Read reason parameter from request
- table.jelly: Show reason for reserved resources, add i18n template
- lockable-resources.js: Prompt for reason on reserve action
- table.properties: Add dialog messages

* fix: consolidate i18n templates to avoid duplicate IDs

* feat: Enhance reservation logging and add authentication check

* refactor: improve logging format for resource reservation and user authentication (#1009)

* fix: include reason in toString(), steal action, and fix spotless formatting
Co-authored-by: Oskar Kirmis <okirmis@triplebit-solutions.de>
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Dependabot-triggered pull_request events only expose a read-only
GITHUB_TOKEN and cannot access custom secrets (secrets.GH_TOKEN was
empty). Switch to pull_request_target so the workflow runs in the
base-branch context where github.token has write permissions.
…ccf1 to 6.2152.ve00a_731c3ce9 (#1006)

* chore(deps): bump org.jenkins-ci.plugins:plugin

Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 5.2102.v5f5fe09fccf1 to 6.2152.ve00a_731c3ce9.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jenkinsci/plugin-pom/commits)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-version: 6.2152.ve00a_731c3ce9
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix duplicate properties keys and spotless formatting

Remove duplicate resource.status.* keys in tableQueue/table.properties
that cause InjectedTest.testProperties failure with plugin-pom 6.x.

Apply spotless formatting fix to LockStepExecution.java.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Pokorny <martin.pokorny@etm.at>
…1010)

Adds timeoutForAllocateResource and timeoutUnit parameters to the lock()
pipeline step and lockTimeout/lockTimeoutUnit to freestyle job resource
configuration. When a timeout is set and the resource is not acquired
within the specified duration, the pipeline build fails with a
LockWaitTimeoutException and the freestyle queue item is cancelled.

Implementation uses a single scheduled task targeting the earliest
deadline across all queued entries, with a periodic safety-net fallback.

Fixes #866
Fixes #849
Fixes #30
Bumps [io.jenkins.tools.bom:bom-2.528.x](https://github.com/jenkinsci/bom) from 6269.v7a_159d68a_366 to 6329.v403d8c87a_5ce.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.528.x
  dependency-version: 6329.v403d8c87a_5ce
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…les (#1017)

When a DataTable has 0 entries (e.g. empty queue, build with no resources),
the data-tables-api plugin's default emptyTable language string shows
'Loading - please wait ...' indefinitely. Override it with a proper message
for the queue table and the build action table.

Fixes #706
…h semaphores (#1011)

Fixes #988

LockableResourcesManager.reset() cleared resource state but never called
proceedNextContext(), so waiting pipeline jobs were never notified when
resources became free via reset(). Every other method that frees resources
(unlockResources, unreserve, addResource) already does this. Added the
same while(proceedNextContext()){} loop inside reset().

Replaced all sleep() calls in the reserve/setReservedBy-inside-lock tests
with SemaphoreStep-based synchronisation, making the tests deterministic
and roughly 4x faster (~20s vs ~80s each). Removed the try-catch Bug#2a
and Bug#2b tolerance blocks since the reset() fix makes them unnecessary.

Affected tests:
- LockStepReserveInsideLockHonouredTest
- LockStepSetReservedByInsideLockHonouredTest
- LockStepTest#reserveInsideLockHonoured
- LockStepTest#setReservedByInsideLockHonoured
* Add tests proving lock queue cleanup on timeout and hard-kill

Adds LockStepTimeoutQueueTest with 5 tests that verify the lock queue
is properly cleaned up when builds are timed out, aborted, or
hard-killed while waiting for a lockable resource:

- timeoutWhileWaitingForLockClearsQueue: timeout step wrapping lock
- abortWhileWaitingForLockByLabelClearsQueue: executor.interrupt()
- timeoutMiddleBuildInQueuePreservesOrder: FIFO order preserved
- hardKillWhileWaitingForLockClearsQueueViaIsValid: doKill() with
  multiple waiters — isValid() fallback removes stale queue entry
- hardKillOnlyWaiterDoesNotBlockFutureBuilds: doKill() sole waiter

All tests pass, confirming the lockable-resources plugin correctly
handles both the clean stop() path and the isValid() fallback path.

Fixes #773

* Add tests proving lock queue cleanup on timeout and hard-kill

Adds LockStepTimeoutQueueTest with 5 tests that verify the lock queue
is properly cleaned up when builds are timed out, aborted, or
hard-killed while waiting for a lockable resource:

- timeoutWhileWaitingForLockClearsQueue: timeout step wrapping lock
- abortWhileWaitingForLockByLabelClearsQueue: executor.interrupt()
- timeoutMiddleBuildInQueuePreservesOrder: FIFO order preserved
- hardKillWhileWaitingForLockClearsQueueViaIsValid: doKill() with
  multiple waiters — isValid() fallback removes stale queue entry
- hardKillOnlyWaiterDoesNotBlockFutureBuilds: doKill() sole waiter

All tests pass, confirming the lockable-resources plugin correctly
handles both the clean stop() path and the isValid() fallback path.

Fixes #773

* refactor: Simplify lock definition syntax in LockStepTimeoutQueueTest

* Apply spotless formatting to LockStepTimeoutQueueTest
* test: Add inversePrecedence regression tests for #861 and #864

Add two new tests to LockStepTest:

- lockInverseOrderWithLabel: verifies inversePrecedence=true grants the
  lock to the newest build when locking by label (JENKINS-40787, #861)

- lockInverseOrderMixedDifferentJobs: verifies each waiting job's own
  inversePrecedence flag controls queue ordering when using separate
  pipeline jobs with mixed settings (JENKINS-41070, #864)

* refactor: Move inversePrecedence tests to separate test class

Extract lockInverseOrderWithLabel and lockInverseOrderMixedDifferentJobs
into LockStepInversePrecedenceTest to keep LockStepTest smaller and
avoid CI timeouts.

* Disable lockInverseOrderWithLabel test (blocked by #861)
…sourcesFromProject (#1020)

Add synchronized(syncResources) blocks around iterations in
getDeclaredResources() and getResourcesFromProject() to prevent
ConcurrentModificationException when the resources list is modified
concurrently by another thread.

Also changes both methods to iterate over this.resources directly
(inside the sync block) instead of this.getResources() which returns
an unprotected reference.

Fixes #933
… on Jenkins 2.532+ (#1027)

Jenkins 2.532 (core PR #11173) changed Queue.maintain() to create a new
BlockedItem instead of updating the existing one when canRun() returns a
CauseOfBlockage. This caused the manual Queue.cancel() in
checkFreestyleTimeout() to be immediately undone.

Override isFatal() returning true on BecauseResourcesTimeout so the queue
itself handles the cancellation. Also bump Jenkins baseline to 2.541 (the
next LTS line that includes the isFatal() API) and update BOM accordingly.

Fixes #1026
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 2.16.0 to 2.16.2.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](crowdin/github-action@v2.16.0...v2.16.2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-version: 2.16.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 6.2152.ve00a_731c3ce9 to 6.2153.vcf31911d10c4.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jenkinsci/plugin-pom/commits/6.2153.vcf31911d10c4)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-version: 6.2153.vcf31911d10c4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [io.jenkins.tools.bom:bom-2.541.x](https://github.com/jenkinsci/bom) from 6364.v16b_76a_4023c7 to 6398.v1d26a_dd495e2.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.541.x
  dependency-version: 6398.v1d26a_dd495e2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [io.jenkins.tools.bom:bom-2.541.x](https://github.com/jenkinsci/bom) from 6398.v1d26a_dd495e2 to 6421.v4a_efb_4b_3a_61d.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.541.x
  dependency-version: 6421.v4a_efb_4b_3a_61d
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [io.jenkins.tools.bom:bom-2.541.x](https://github.com/jenkinsci/bom) from 6421.v4a_efb_4b_3a_61d to 6453.v115ff6f496dd.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.541.x
  dependency-version: 6453.v115ff6f496dd
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [io.jenkins.tools.bom:bom-2.541.x](https://github.com/jenkinsci/bom) from 6453.v115ff6f496dd to 6486.v7c7b_3635dc42.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.541.x
  dependency-version: 6486.v7c7b_3635dc42
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.jenkins-ci.plugins:plugin](https://github.com/jenkinsci/plugin-pom) from 6.2153.vcf31911d10c4 to 6.2189.v695a_c41f5249.
- [Release notes](https://github.com/jenkinsci/plugin-pom/releases)
- [Changelog](https://github.com/jenkinsci/plugin-pom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jenkinsci/plugin-pom/commits)

---
updated-dependencies:
- dependency-name: org.jenkins-ci.plugins:plugin
  dependency-version: 6.2189.v695a_c41f5249
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Pokorny <89339813+mPokornyETM@users.noreply.github.com>
…odernized UI (#1035)

* Move resource management to dedicated Manage Jenkins subpage and modernize UI

Fixes #1021, fixes #964, fixes #1018

- Convert LockableResourcesRootAction from RootAction to ManagementLink
  under Manage Jenkins > Configuration category
- Use settings-subpage layout with Jenkins-native app-bar and tabs
- Remove data-tables-api dependency; use native jenkins-table sortable
- Add client-side pagination with localStorage persistence
- Add resource CRUD (create, edit, delete) via JSON API endpoints
- Add filter/search: structured filter for resources tab (name, label,
  status), text search for labels and queue tabs
- Add resource property management (key-value pairs) in add/edit dialogs
- Simplify Global Config page to only retain the two behavior toggles
  (allowEmptyOrNullValues, allowEphemeralResources) with a notice
  linking to the new management page
- Replace Bootstrap tab markup with capsule-style tab bar matching
  Jenkins Dashboard design
- Use event delegation for all button handlers
- Add ManagementLinkTest and ResourceManagementTest (28 tests)

* update docs

* ran spotless

* fix: add write permission for issues in auto-label PR workflow

* fix: change pull_request to pull_request_target for auto-label workflow

* revert auto label changes

* Rerun CI

* Updates:

1. Add back the sidebar entry using `LockableResourcesSidebarLink.java`
2. Add the search along with advanced filters with reload on persist

* feat: implement horizontal scrolling for tables and adjust pagination controls

* refactor: update resources table layout for better overflow handling

* refactor: align action buttons to the start in resources table

* Pulling the changes from #1033, aligning them with new UI, and many more enhancements that I am lazy to type it out

* feat: implement server-side pagination for queue items and enhance UI components

* enable scrollable on queues table again

* Minor UI fixes which will make it look and feel better and responsive

* fix: ensure case-insensitive filtering uses Locale.ENGLISH for consistency

* fix: improve row selection logic in pagination to enhance filtering accuracy

* feat: enhance resource management tests with queue page functionality and server-side filters

* fix: update reservedBy display to link to user profile in resource table

* remove queued resource handling from UI and calculations for clarity

* Add overview queue metrics, clickable filter navigation, and fix note form

- Add queue card metrics: longest waiting build with duration, most contended resource with build count
- Make overview pills clickable: legend pills filter by status, label pills filter by label, resource name links filter by name
- Add clearResourceFilters() helper to reset all filters before applying a new one from overview navigation
- Fix pre-existing bug: note preview never worked because evalInnerHtmlScripts was missing (scripts in AJAX response weren't executed, so Behaviour rules for preview never registered)
- Fix note form save redirecting to overview tab: intercept form submit via AJAX and reload with tab hash preserved
- Fix note preview/hide-preview links navigating away from page
- Wire evalInnerHtmlScripts for note form so preview works in AJAX-loaded content
- Normalize pill hover behavior (consistent translateY lift)
- Add /jsbundles/ to .gitignore

* Rerun CI

* Add fine-grained permission model and fixed the dual-layout support

Add CONFIGURE permission to the existing Lockable Resources permission
group for resource CRUD operations. Previously create/edit/delete
required Jenkins.ADMINISTER directly.

Permission defaults (impliedBy):
- View: Jenkins.READ (any authenticated user can see resource status)
- All others: Jenkins.ADMINISTER (preserves existing behavior)

Admins can now delegate individual permissions to roles without
granting full admin access.

Changes:
- Convert LockableResourcesRootAction from ManagementLink to RootAction
  for direct access at /lockable-resources/ without requiring
  Jenkins.MANAGE
- Add LockableResourcesManagementLink so the plugin remains listed in
  Manage Jenkins sidebar under Configuration
- Render with settings-subpage layout (Manage Jenkins sidebar) when
  accessed via /manage/lockable-resources/, plain layout otherwise
- Add CONFIGURE permission gating create/edit/delete resource endpoints
  (previously Jenkins.ADMINISTER)
- Gate edit and delete buttons in resource table on CONFIGURE permission
- Extract shared page content to _content.jelly fragment with
  localization property files for all supported locales
- Remove redundant LockableResourcesSidebarLink
- Add tests for VIEW permission access, Jenkins.READ implied access,
  and denial without READ

* fix: enhance access control test to handle login redirects

* update docs

* fix: apply spotless formatting to ManagementLink and ResourceManagementTest

---------

Co-authored-by: Aditya Jalkhare <Aditya.Jalkhare@cognyte.com>
Co-authored-by: Martin Pokorny <89339813+mPokornyETM@users.noreply.github.com>
…sts (#1028)

* fix: Correct NodesMirror package declaration to match directory structure

NodesMirror.java resides in the nodes/ subdirectory but declared
package org.jenkins.plugins.lockableresources instead of
org.jenkins.plugins.lockableresources.nodes. Fix the package
declaration and update fully-qualified references in
ConcurrentModificationExceptionTest and NodesMirrorTest.

* test: Add regression tests for label quantity allocation (#939)

Add LockStepLabelQuantityOneTest with three test scenarios for
JENKINS-67083: 3 resources with the same label and 3 concurrent
builds each requesting quantity 1. All three tests pass, confirming
the issue is no longer reproducible.

* Fix LockableResourcesManager get() lookup

* test: Apply Spotless formatting
Bumps [io.jenkins.tools.bom:bom-2.541.x](https://github.com/jenkinsci/bom) from 6486.v7c7b_3635dc42 to 6509.v993a_c958a_e35.
- [Release notes](https://github.com/jenkinsci/bom/releases)
- [Commits](https://github.com/jenkinsci/bom/commits)

---
updated-dependencies:
- dependency-name: io.jenkins.tools.bom:bom-2.541.x
  dependency-version: 6509.v993a_c958a_e35
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.