我通常使用以下方式将资源锁定在声明性管道中:
lock(resource: "MY_RESOURCE") {
// do something
}
但是现在我可以使用几种不同的资源,有没有办法检查资源是否被锁定?
我想做类似的事情:
myResources = ["RES1", "RES2", "RES3"]
hasResource = false
for (resource in myResources) {
if (hasresource) {
break
}
if (!isLocked(resource)) {
hasresource = true
lock(resource) {
// do something
}
}
}
(对不起,如果语法错误,我并不是经常用Groovy编程)
答案 0 :(得分:1)
根据锁插件的来源,这应该可以工作:
import org.jenkins.plugins.lockableresources.LockableResourcesManager as LRM
def myResources = ["RES1", "RES2", "RES3"]
def notLocked = myResources.find{rName->
LRM.get().forName(rName).with{ r-> !r.isLocked() && !r.isQueued() }
}
if(notLocked){
lock(notLocked){
//do smth
}
}