无法将失败的Jenkins作业的输出输出到管道的控制台

时间:2019-10-22 13:08:14

标签: jenkins console output syntax-error jenkins-pipeline

无法将Faing Jenkins作业的输出输出到管道控制台

我正在从管道中调用几个作业。下面是从管道中触发的示例作业“ printuser”。

我可以在我的管道控制台上获得作业的输出,这是我的要求。

pipeline { 
    agent none
    stages {     
        stage ("Check Parameters"){ 
            steps {
                echo "In pipeline"
                script {
                    echo "Start condition check"
                }
                 def slaveJob = build job: 'printuser'
                 println slaveJob.rawBuild.log  
             }
         }
     }
}

当“ printuser”失败时会发生此问题,在这种情况下,失败的输出不会显示在管道控制台页面中。

我尝试将println添加到发布失败块中,如下所示:

post {
    failure {
        script {
            println slaveJob.rawBuild.log
        }
    }
}

但是,这样做时出现以下错误。

 Error when executing failure post condition:
groovy.lang.MissingPropertyException: No such property: slaveJob for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:270)

您能否建议我如何将“ FAILING”作业的输出发送到管道控制台?

2 个答案:

答案 0 :(得分:1)

在您的帖子块中,您可以打印整个作业构建日志。

post {
   failure {
     echo Jenkins.getInstance().getItemByFullName('printuser').getLastBuild().logFile.text
   }
}

请注意,您应该批准特定的签名,以允许管道和常规访问上述功能。 如果您尚未执行此操作,则上述脚本将失败并显示

  

开始条件检查不允许脚本使用staticMethod   jenkins.model.Jenkins getInstance。管理员可以决定是否   批准或拒绝此签名。

您可以通过单击错误消息链接来跟踪错误消息,该链接会将您重定向到Jenkins的 scriptApproval 页面,您可以在该页面中将需要批准的签名添加到批准列表中。

您应该具有以下已批准的签名列表,以上各项才能起作用

method hudson.model.ItemGroup getItem java.lang.String
method hudson.model.Job getLastBuild
method hudson.model.Run getLogFile
method jenkins.model.Jenkins getItemByFullName java.lang.String
staticMethod jenkins.model.Jenkins getInstance
staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getText java.io.File

如果遵循此解决方案,则可以将帖子的失败操作更改为始终,以便始终打印日志(不仅针对错误),还可以删除println slaveJob.rawBuild.log

答案 1 :(得分:0)

使用def关键字时,变量具有块范围。尝试使用slaveJob = build job: 'printuser'而不使用def