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