Groovy передает Дженкинс в штучной упаковке, как распаковать? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь написать конвейер Jenkins, который бы перезапускал Jenkins раз в неделю, если не выполняются никакие задания.Поскольку я не хочу слишком долго блокировать запущенные задания, я пытаюсь вызвать 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)

Так что это здоровоПередача в штучной упаковке типов, но Дженкинс ожидает неупакованных типов.Я пробовал приводить к распакованным типам 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 (текущая версия на момент публикации)

1 Ответ

2 голосов
/ 13 июня 2019

Это не статический метод.И вы называете это статичным.

Вы должны сделать что-то вроде Jenkins.get().doQuietDown(...).

Бокс / распаковка - groovy сделать это автоматически.

...