如何从Jenkins管道的先前版本中获取日志?

时间:2019-07-19 01:14:31

标签: jenkins groovy jenkins-pipeline jenkins-groovy

在我的詹金斯管道中,第一阶段执行自由式作业。因此,我需要从该作业中获取输出/日志,因为它将返回一串IP,这些IP将在我的第二阶段中使用。

def getEc2ListResult = []
pipeline {
    agent {
        label 'master'
    }

stages{
    stage('Get EC2 List'){
        steps {
            script {
                def getEc2List = build job: 'get-ec2-by-tag', parameters: [
                    string(name: 'envTagValue', value: "${envTagValue}"),
                    string(name: 'OS', value: "${OS}")
                ]
                getEc2ListResult = getEc2List.getPreviousBuild().getLog(20)
            }
        }
    }
}

}

这是我得到的错误:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper.getLog() is applicable for argument types: (java.lang.Integer) values: [20]
Possible solutions: getId(), getAt(java.lang.String), getClass()

1 个答案:

答案 0 :(得分:0)

getEc2List的类型为RunWrapper,也是getEc2List.getPreviousBuild()的类型。

RunWrapper不提供getLog() api,而是由rawBuild提供。

您可以通过调用getEc2ListgetEc2List.rawBuild获得getEc2List.getRawBuild()的rowBuild。

但是getRawBuild()不在@Whitelisted的{​​{1}}中,因此您将在jenkins日志中得到以下消息:

  

不允许使用方法的脚本   org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper   getRawBuild。管理员可以决定是批准还是拒绝   此签名。

一种选择,是让Jenkins管理员更改脚本批准

另一个选项,操作如下:

RunWrapper