我正在使用Jenkins Lockable Resources插件来确定声明性管道中要用于各种构建操作的服务器。我已经设置了可锁定资源,如下表所示:
Resource Name Labels
Win_Res_1 Windows
Lx_Res_1 Linux
我获取可锁定资源的代码如下:
pipeline {
agent any
stages {
stage("Lock resource") {
steps {
script {
int num = 1
String label = "Windows"
lock(label: label, quantity: num, variable: "resource_name") {
echo "Locked resource name is ${env.resource_name}"
}
}
}
}
}
}
现在,假设Jenkins job-1
正在运行以在Windows
上构建应用程序,并且它已获取Windows资源Win_Res_1
。此时,我启动了另一个Jenkins job-2
,它也必须在Windows
机器上进行构建。因此,这里的期望是job-2
将等待资源,直到job-1
放弃它。 job-1
完成后,资源Win_Res_1
将对job-2
可用。
对于我来说,这没有发生。可锁定资源插件没有等待资源,而是引发以下错误(在job-2
进行中的job-1
中)
No such property: resource_name for class: groovy.lang.Binding
这是插件的已知限制吗?
我使用的是Jenkins 2.89.1版,可锁定资源插件的版本是2.2
答案 0 :(得分:0)
这是一个已知问题,已在Lockable插件版本2.3(JENKINS-34433)中得到解决。
但是,我已升级到Jenkins 2.235.1和Lockable插件版本2.8,现在没有发现问题。