詹金斯管道节流其他工作

时间:2016-03-15 09:04:23

标签: jenkins groovy jenkins-workflow

当jenkins管道运行时,我试图锁定其他一些工作 我一直在尝试使用排除插件 throttle-concurrent-builds-plugin
有这种结构:

 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插件开始,我因为无法限制其他作业而受阻 谢谢你的帮助!

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

管道中尚不支持Throttle插件 - JENKINS-31801

Locks和Latches插件可以在一些简单的情况下提供帮助,但将来可能会弃用它 - Proposed Plugin Deprecation