-
Bug
-
Resolution: Not A Defect
-
Minor
-
None
Lockable Resource Plugin Version: 2.3
I am trying to use env variable in label field and the resource doesn't get locked. The job gets stuck infinitely waiting for the resource even though env variable is set.
pipeline { agent { node { label 'centos_node' } } stages { stage("Setup") { steps { script { env.NODE_LABEL = "pre_commit" } } } stage ("Build") { options { lock(label: "${env.NODE_LABEL}", variable: "NODELABEL", quantity: 1) } steps { script { sh "echo \"${env.NODELABEL}\"" } } } } }
Console Output:
+refs/heads/master:refs/remotes/origin/master # timeout=10 Checking out Revision 9db4337fd2811d9ebce79f1761ef40a88ec16fb2 (master) > git config core.sparsecheckout # timeout=10 > git checkout -f 9db4337fd2811d9ebce79f1761ef40a88ec16fb2 # timeout=10 Commit message: "send slack for only master builds" > git rev-list --no-walk 9db4337fd2811d9ebce79f1761ef40a88ec16fb2 # timeout=10[Pipeline] nodeRunning on codereview1.eng.nutanix.com in /root/workspace/QA/test_lock[Pipeline] {[Pipeline] stage[Pipeline] { (Setup)[Pipeline] script[Pipeline] {[Pipeline] } [Pipeline] // script[Pipeline] }[Pipeline] // stage[Pipeline] stage[Pipeline] { (Build)[Pipeline] lockTrying to acquire lock on [Label: null, Quantity: 1] Found 0 available resource(s). Waiting for correct amount: 1. *[Label: null, Quantity: 1] is locked, waiting...*
A lock should get acquired by resource with label 'pre_commit' but it is infinitely waiting for the resource as label value is coming as null.
Any news on this issue? I am having the same problem. (declarative mulitbranch pipeline, Jenkins Version 2.176, Lockable Resources Plugin 2.5)
I am trying to dynamically determine the name of the resource which should be locked in an pipeline step before locking the resource.
As far as I understand the problem, this is not an issue of using an environment variable but a timing issue. The lockable resources plugin seems to determine the value/name of the resource/label to be locked at the beginning of the pipeline. If the value/name of the resource/label to be locked is created after the start of the pipeline and before executing the lock the value passed to the lockable resources plugin has no effect.
Here an example that shows the issue:
Pipeline:
Console Output:
Can you change the lockable resource plugin so that the name of the resource is determined when the plugin is executed and not at the beginning of the pipeline?