我正在将“Locable Resources Plugin”与Jenkins多管道功能一起使用:

lock('my-resource-name') {

}

我遇到一种情况,我需要将资源锁定在一个管道中,然后在另一个管道中将其解锁。我有解决方法,但如果可能的话,我希望使用锁插件。

我像这样的东西
lock("my-resource-name")
.....
unlock("my-resource-name)

为什么

我正在实现canary版本,并且通过管道有3条不同的路径(我考虑了其他解决方案,例如使用输入插件暂停管道-为我提供更多的功能超出了此问题的范围)。
我想在评估金丝雀时锁定/停止管道,然后在升级或回滚完成后再次将其解锁。
省略主体的lock语句只会给我java.lang.IllegalStateException: There is no body to invoke

最佳答案

一种实现方法是:

curl -XGET https://your-jenkins/lockable-resources/reserve?resource=myresource
curl -XGET https://your-jenkins/lockable-resources/unreserve?resource=myresource

GET并不是一个错误,它确实是GET。

等待锁
lock("my-resource-name") {}

我也知道Jenkins支持所谓的“里程碑”,这显然是用于内部版本之间进行通信的东西。但是我不知道是否可以用它以任何有意义的方式解决这个问题。

关于Jenkins可锁定资源-锁定而无需解锁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51552073/

10-16 15:54