Add support to use this plugin from workflow to manage concurrent consumption of resources.

      Similar to how stage step works as blocked scoped to control concurrency of other builds for this job running this step at the same time, it would be useful to be able to do this for resources across jobs.

      Continue to allow the resources to be set up in the Jenkins configuration.

      Consumption of resources should be controlled with a syntax along these lines:

      For a single resource:

      resource (name: db-a-1, reservedVariable: DB_RESOURCE) {

      // Do something here that uses the resource

      echo “DB Resource(s) used = $DB_RESOURCE”
      }

      For a pool of resources sharing a label:

      resource (label: db-a, quantity: 2, reservedVariable: DB_RESOURCE) {

      // Do something here that uses the resource

      echo “DB Resource(s) used = $DB_RESOURCE”
      }

          [JENKINS-30269] Add workflow support for resource locking

          This would be highly appreciated for controlling nodes that can run one (1) instance of a software that's needed in a build at a time. A different approach would be 'labelled executors', or alternatively 'virtual slaves'. Personally I would prefer such a solution to resource locking (of course, counting software licences is a different use case).

          Thomas Goeppel added a comment - This would be highly appreciated for controlling nodes that can run one (1) instance of a software that's needed in a build at a time. A different approach would be 'labelled executors', or alternatively 'virtual slaves'. Personally I would prefer such a solution to resource locking (of course, counting software licences is a different use case).

          Jesse Glick added a comment -

          Hmm, I filed JENKINS-29461 for the locks-and-latches plugin but it seems to have disappeared from JIRA! (Recorded in COMPATIBILITY.md on Tue Jul 21.) Anyway that plugin seems abandoned? So this is better.

          As written LockableResource is not ready for Workflow because its state is transient.

          Jesse Glick added a comment - Hmm, I filed JENKINS-29461 for the locks-and-latches plugin but it seems to have disappeared from JIRA! (Recorded in COMPATIBILITY.md on Tue Jul 21.) Anyway that plugin seems abandoned? So this is better. As written LockableResource is not ready for Workflow because its state is transient .

          Code changed in jenkins
          User: Nigel Harniman
          Path:
          COMPATIBILITY.md
          http://jenkins-ci.org/commit/workflow-plugin/c8a97fd333a28a388c4b64c97ad7eeddc9f3a125
          Log:
          JENKINS-30269 noting.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nigel Harniman Path: COMPATIBILITY.md http://jenkins-ci.org/commit/workflow-plugin/c8a97fd333a28a388c4b64c97ad7eeddc9f3a125 Log: JENKINS-30269 noting.

          A suggested work around for this problem is documented in ticket JENKINS-31343. However, if the delay on the resource would be rather long (several hours to a day or more) the frequency of the resource check would be so slow that you easily loose an hour before detecting that the resource has been freed.

          Xavier Van Dessel added a comment - A suggested work around for this problem is documented in ticket JENKINS-31343 . However, if the delay on the resource would be rather long (several hours to a day or more) the frequency of the resource check would be so slow that you easily loose an hour before detecting that the resource has been freed.

          Jesse Glick added a comment -

          JENKINS-31343 does not really have much to do with this, I think, since waitUntil is not a useful workaround for this RFE unless you already have an external resource locking system you can use.

          Jesse Glick added a comment - JENKINS-31343 does not really have much to do with this, I think, since waitUntil is not a useful workaround for this RFE unless you already have an external resource locking system you can use.

          Jesse Glick added a comment -

          In particular, without internal code changes this plugin is not ready for Workflow.

          Jesse Glick added a comment - In particular, without internal code changes this plugin is not ready for Workflow.

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/85e2b3838fe4121aeffc2b78750b0deb2501743e
          Log:
          JENKINS-30269 Core version bump - required to add Pipeline support

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStep.java http://jenkins-ci.org/commit/lockable-resources-plugin/85e2b3838fe4121aeffc2b78750b0deb2501743e Log: JENKINS-30269 Core version bump - required to add Pipeline support

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/524081869f6088d8dafda2065fc98f1c19f682b4
          Log:
          JENKINS-30269 Step execution implementation

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStep.java src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java http://jenkins-ci.org/commit/lockable-resources-plugin/524081869f6088d8dafda2065fc98f1c19f682b4 Log: JENKINS-30269 Step execution implementation

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java
          src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/c716299b6051a9d9bc5a905ebc663d9939025c27
          Log:
          JENKINS-30269 Use the global static resources state

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/c716299b6051a9d9bc5a905ebc663d9939025c27 Log: JENKINS-30269 Use the global static resources state

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/d53849225dd18497a7b328476dfb0e6452af0147
          Log:
          JENKINS-30269 Avoid infinite checking in the background task

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java http://jenkins-ci.org/commit/lockable-resources-plugin/d53849225dd18497a7b328476dfb0e6452af0147 Log: JENKINS-30269 Avoid infinite checking in the background task

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/d5b44a42d021326ccf9a8da743904024e87ab2a5
          Log:
          JENKINS-30269 Make the step work

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java http://jenkins-ci.org/commit/lockable-resources-plugin/d5b44a42d021326ccf9a8da743904024e87ab2a5 Log: JENKINS-30269 Make the step work

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesQueueTaskDispatcher.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/810e1e903525fa1a4115bca0f333c1fcb937072f
          Log:
          JENKINS-30269 Upgrade baseline to pick up a recent version of Pipeline

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesQueueTaskDispatcher.java http://jenkins-ci.org/commit/lockable-resources-plugin/810e1e903525fa1a4115bca0f333c1fcb937072f Log: JENKINS-30269 Upgrade baseline to pick up a recent version of Pipeline

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/aea4806c068c97679bcdec4e9247a4365ff72f7d
          Log:
          JENKINS-30269 Better logs when using the lock step

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/aea4806c068c97679bcdec4e9247a4365ff72f7d Log: JENKINS-30269 Better logs when using the lock step

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/59049a56a3441497536c6938786b2da98945a537
          Log:
          JENKINS-30269 Take advantage of TailCall

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/59049a56a3441497536c6938786b2da98945a537 Log: JENKINS-30269 Take advantage of TailCall

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/e75f02e91c4df6d982d92dc47906ff282465a2a4
          Log:
          JENKINS-30269 Jenkins restart support

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStep.java src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/e75f02e91c4df6d982d92dc47906ff282465a2a4 Log: JENKINS-30269 Jenkins restart support

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/config.jelly
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-maxWaiting.html
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-resource.html
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/9617986b388c2bc20f8d63b8f5162f0f2091dd7e
          Log:
          JENKINS-30269 Add step configuration page + limit waiting builds

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: src/main/java/org/jenkins/plugins/lockableresources/LockStep.java src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java src/main/resources/org/jenkins/plugins/lockableresources/LockStep/config.jelly src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-maxWaiting.html src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-resource.html src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/9617986b388c2bc20f8d63b8f5162f0f2091dd7e Log: JENKINS-30269 Add step configuration page + limit waiting builds

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/main/java/org/jenkins/plugins/lockableresources/actions/LockableResourcesRootAction.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockRunListener.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/a14014bdbbfbe2a76f7a97bf7b2add0aa92796d2
          Log:
          JENKINS-30269 Supress polling for locking and use StepContext to notify locks in the same Pipeline build

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/main/java/org/jenkins/plugins/lockableresources/actions/LockableResourcesRootAction.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockRunListener.java http://jenkins-ci.org/commit/lockable-resources-plugin/a14014bdbbfbe2a76f7a97bf7b2add0aa92796d2 Log: JENKINS-30269 Supress polling for locking and use StepContext to notify locks in the same Pipeline build

          Code changed in jenkins
          User: Antonio Muñiz
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/9fe73b1ce5b7276caa3270741e2ae82c582436d8
          Log:
          JENKINS-30269 Add inversePrecedence parameter + tests

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Muñiz Path: src/main/java/org/jenkins/plugins/lockableresources/LockStep.java src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/9fe73b1ce5b7276caa3270741e2ae82c582436d8 Log: JENKINS-30269 Add inversePrecedence parameter + tests

          Code changed in jenkins
          User: Antonio
          Path:
          pom.xml
          src/main/java/org/jenkins/plugins/lockableresources/LockStep.java
          src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java
          src/main/java/org/jenkins/plugins/lockableresources/actions/LockableResourcesRootAction.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockRunListener.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesQueueTaskDispatcher.java
          src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/config.jelly
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-inversePrecedence.html
          src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-resource.html
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/466adef6c1b0212b2866f3b562a4059040a6109a
          Log:
          Merge pull request #25 from amuniz/JENKINS-30269

          JENKINS-30269 Add pipeline support for resource locking

          Compare: https://github.com/jenkinsci/lockable-resources-plugin/compare/76c93d5f4d1e...466adef6c1b0

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Antonio Path: pom.xml src/main/java/org/jenkins/plugins/lockableresources/LockStep.java src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java src/main/java/org/jenkins/plugins/lockableresources/LockableResource.java src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/main/java/org/jenkins/plugins/lockableresources/RequiredResourcesProperty.java src/main/java/org/jenkins/plugins/lockableresources/actions/LockableResourcesRootAction.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockRunListener.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesQueueTaskDispatcher.java src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java src/main/resources/org/jenkins/plugins/lockableresources/LockStep/config.jelly src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-inversePrecedence.html src/main/resources/org/jenkins/plugins/lockableresources/LockStep/help-resource.html src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java src/test/java/org/jenkins/plugins/lockableresources/LockableResourceTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/466adef6c1b0212b2866f3b562a4059040a6109a Log: Merge pull request #25 from amuniz/ JENKINS-30269 JENKINS-30269 Add pipeline support for resource locking Compare: https://github.com/jenkinsci/lockable-resources-plugin/compare/76c93d5f4d1e...466adef6c1b0

          Released as 1.8

          Antonio Muñiz added a comment - Released as 1.8

          Florian Hug added a comment -

          First of all, it's great to finally have workflow support for resource locking.
          However, I couldn't find any possibility to lock, e.g. 3 resources assigned to the label Foo.
          As far as I have understood the documentation and from trying to understand the source code, the workflow support is limited to request a specific resource by name.

          Wouldn't it be great to have the full functionality available in workflows?
          Especially as these use cases were also mentioned by the issue reporter.

          Florian Hug added a comment - First of all, it's great to finally have workflow support for resource locking. However, I couldn't find any possibility to lock, e.g. 3 resources assigned to the label Foo. As far as I have understood the documentation and from trying to understand the source code, the workflow support is limited to request a specific resource by name. Wouldn't it be great to have the full functionality available in workflows? Especially as these use cases were also mentioned by the issue reporter.

          As far as I have understood the documentation and from trying to understand the source code, the workflow support is limited to request a specific resource by name.

          Right.

          Wouldn't it be great to have the full functionality available in workflows?

          Especially as these use cases were also mentioned by the issue reporter.

          Yes. I've tried to cover the most common use-case in a Pipeline world (which is a replacement for stage concurrency: 1). The lock step has been designed to allow the addition of labels and multiple locking in future releases (filed as JENKINS-34268).

          Antonio Muñiz added a comment - As far as I have understood the documentation and from trying to understand the source code, the workflow support is limited to request a specific resource by name. Right. Wouldn't it be great to have the full functionality available in workflows? Especially as these use cases were also mentioned by the issue reporter. Yes. I've tried to cover the most common use-case in a Pipeline world (which is a replacement for stage concurrency: 1 ). The lock step has been designed to allow the addition of labels and multiple locking in future releases (filed as JENKINS-34268 ).

          Code changed in jenkins
          User: Jesse Glick
          Path:
          COMPATIBILITY.md
          http://jenkins-ci.org/commit/pipeline-plugin/7596ae10c2035a6c239e4ce8ca3af4c1ee1f78c8
          Log:
          Noting JENKINS-30269 (CC @amuniz)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: COMPATIBILITY.md http://jenkins-ci.org/commit/pipeline-plugin/7596ae10c2035a6c239e4ce8ca3af4c1ee1f78c8 Log: Noting JENKINS-30269 (CC @amuniz)

            amuniz Antonio Muñiz
            nharniman Nigel Harniman
            Votes:
            9 Vote for this issue
            Watchers:
            21 Start watching this issue

              Created:
              Updated:
              Resolved: