2016-03-15 2 views
3

Я пытаюсь заблокировать некоторые другие работы из подножка, когда трубопровод Дженкинс работает,
Я пытался использовать запретного-плагин или дроссельных-параллельный-builds- плагин
с такой структурой:Дженкинс Pipeline душить другие работы

node(){ 
    stage "test" 
    allocate('test') 
    sleep time: 15, unit: 'MINUTES' 
    sh "echo 'yes'" } 

@NonCPS 
def allocate(String resource){ 

    throttle = new hudson.plugins.throttleconcurrents.ThrottleJobProperty(
    maxConcurrentPerNode=1, 
    maxConcurrentTotal=1, 
    categories = [resource], 
    throttleEnabled=true, 
    throttleOption="category", 
    matrixOptions=null 
    ) 
    throttle.setOwner() 
    throttle = null 
    return true 
} 

Но это не кажется, ничего делать ...
я начинаю с плагином Groovy Pipeline, и я блок неспособностью к дроссель другие рабочие места
Спасибо за помощь!

ответ

1

Для тех, кто находится в той же борьбе,
Вы можете использовать этот плагин: https://github.com/jenkinsci/lockable-resources-plugin
используя эту ветку: https://github.com/jenkinsci/lockable-resources-plugin/pull/25

Я не знаю, если это будет объединено в один прекрасный день, но MR является полностью использовать и может быть использован как:

echo 'Starting' 
lock('my-resource-name') { 
    echo 'Do something here that requires unique access to the resource' 
    // any other build will wait until the one locking the resource leaves this block 
} 
echo 'Finish' 
+0

Похоже, что филиал был объединен с мастером :) –

+0

Имейте в виду, что выполнение плагинов блокируемых ресурсов блокируется после того, как выделен узел/исполнитель. – deadmoto

0

дроссельной заслонки плагин не поддерживается в трубопроводе еще - JENKINS-31801.

Плагин Locks and Latches может помочь в некоторых простых случаях, хотя он может быть устаревшим в будущем - Proposed Plugin Deprecation.

Смежные вопросы