Groovy - трубопровод Дженкинса - Groovy CPS не go через метод .eachLine - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь запустить этот код внутри сценария Jenkins Pipeline:

def getTags = { svnurl ->
    def command = ["svn","ls","${svnurl}"];
    def proc = command.execute()
    proc.waitFor()

    proc.in.eachLine {
        println(it)
    }    
}

getTags('http://svnurlexample.net/');

Результатом должен быть список папок в папке svn, но я получаю сообщение об ошибке:

[Pipeline] echo:

1.0.0 /

, как ожидается, вызовет java .lang.ProcessImpl $ ProcessPipeInputStream.eachLine, но завершится перехватом org.jenkinsci.plugins.workflow.cps. CpsClosure2.call

Про c .in.eachLine вызывает проблему, как будто Groovy находит первую папку в расположении, но не может обработать остальные и сообщает об ошибке.

1 Ответ

0 голосов
/ 27 марта 2020

Вот что у меня сработало:

@NonCPS
def getTags (svnurl) {
    def command = ["svn","ls","${svnurl}"];
    def proc = command.execute()
    proc.waitFor()

    proc.in.eachLine {
        println(it)
    }    
}

getTags('http://svnurlexample.net/');
...