我正在尝试编写一个Jenkins管道,如果没有作业在运行,它将每周一次重新启动Jenkins。由于我不想长时间阻塞正在运行的作业,因此我尝试使用timeout参数调用doQuietDown
。
https://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html#doQuietDown-boolean-int-
这就是我要尝试的:
stage('Quiet Down') {
steps {
script {
boolean doBlock = true
int timeout_ms = 30000
Jenkins.doQuietDown(doBlock, timeout_ms)
}
}
}
那失败了:
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: static jenkins.model.Jenkins.doQuietDown() is applicable for argument types: (java.lang.Boolean, java.lang.Integer) values: [true, 30000]
Possible solutions: doQuietDown(boolean, int), doQuietDown()
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1501)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1487)
因此groovy正在传递盒装类型,但Jenkins希望使用非盒装类型。我尝试使用booleanValue()
和intValue()
(不带变量)对未装箱的类型true
和30000
进行类型转换,但这对错误消息没有影响。
我也尝试过Jenkins.doQuietDown block: doBlock, timeout: timeout_ms
,但它通过了LinkedHashMap
:
jenkins.model.Jenkins.doQuietDown() is applicable for argument types: (java.util.LinkedHashMap) values: [[block:true, timeout:30000]]
我正在使用Jenkins 2.180(本文发布时的当前版本)
答案 0 :(得分:2)
这不是静态方法。您称其为静态。
您必须执行类似Jenkins.get().doQuietDown(...)
的操作。
装箱/拆箱-Groovy自动执行。