jenkins 2.0 pipline println无法正常工作

Gil*_*ian 2 java groovy jenkins jenkins-pipeline

鉴于这个FirstScript.groovy:

class FirstScript implements Serializable{
    def firstFunction() {
        println "This print doesn't work"
        return "This string can be returned and printed"
    }
}

return new FirstScript()
Run Code Online (Sandbox Code Playgroud)

这个pipline代码:

node("Slave") {
    checkout scm
    def firstScript = load 'FirstScript.groovy'
    echo firstScript.firstFunction()
}
Run Code Online (Sandbox Code Playgroud)

唯一的输出是"可以返回并打印此字符串".

这显然是因为println发生在slave的输出流而不是master的输出流上,但我需要一种方法来连续打印从slave到master的控制台日志.尝试将System.out从master传递到slave,没有任何效果.

有什么建议?

bur*_*ttk 7

嘿,我不清楚为什么println没有工作,但是好的电话,这是有道理的.如果您要编写一堆共享代码,则可能需要使用jenkins共享库.您可以echo在共享库中的vars中使用.

如果你想让你的例子"按原样"工作,你可以将管道上下文注入firstFunction:

FirstScript.groovy:

class FirstScript implements Serializable{
    def firstFunction(dsl) {
        dsl.echo "This print doesn't work. well now it does. :)"
        return "This string can be returned and printed"
    }
}

return new FirstScript()
Run Code Online (Sandbox Code Playgroud)

Jenkinsfile:

node("docker") {
    checkout scm
    def firstScript = load 'FirstScript.groovy'
    echo firstScript.firstFunction(this)
}
Run Code Online (Sandbox Code Playgroud)