проверить, заблокирован ли ресурс - PullRequest
0 голосов
/ 23 октября 2019

Я обычно блокирую ресурсы в своем декларативном конвейере с помощью чего-то вроде:

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)

1 Ответ

1 голос
/ 25 октября 2019

в соответствии с источниками плагина блокировки это должно работать:

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...