Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Jenkins管道中以前的构建中获取日志?_Jenkins_Groovy_Jenkins Pipeline_Jenkins Groovy - Fatal编程技术网

如何从Jenkins管道中以前的构建中获取日志?

如何从Jenkins管道中以前的构建中获取日志?,jenkins,groovy,jenkins-pipeline,jenkins-groovy,Jenkins,Groovy,Jenkins Pipeline,Jenkins Groovy,在我的詹金斯管道中,第一阶段执行自由式作业。因此,我需要从该作业中获取输出/日志,因为它将返回一个将在第二阶段使用的IP字符串 def getEc2ListResult = [] pipeline { agent { label 'master' } stages{ stage('Get EC2 List'){ steps { script { def getEc2List = bu

在我的詹金斯管道中,第一阶段执行自由式作业。因此,我需要从该作业中获取输出/日志,因为它将返回一个将在第二阶段使用的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()

getEc2List
的类型也是
getEc2List.getPreviousBuild()

RunWrapper
不提供
getLog()
api,它由提供

您可以通过调用
getEc2List.rawBuild
getEc2List.getRawBuild()
来获取
getEc2List
的行构建

但是
getRawBuild()
不在
RunWrapper
@Whitelisted
中,因此您将在jenkins日志中看到以下消息:

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

一个选择是,要求Jenkins管理员更改脚本并批准

另一个选项是,它的操作如下:

stage('') {

    environment {
      JENKINS_AUTH = credentials('<credentail id of jenkins auth>')
      // add an credentail with a jenkins user:password before use it at here
    }

    steps {
        script {
            def getEc2List = build job: 'get-ec2-by-tag', parameters: [
                string(name: 'envTagValue', value: "${envTagValue}"),
                string(name: 'OS', value: "${OS}")
            ]
            logUrl = getEc2List.absoluteUrl + 'consoleText'

            log = sh(script: 'curl -u {JENKINS_AUTH} -k' + logUrl, 
                     returnStdout: true).trim()

            // parse the log to extract the ip
            ...
        }
    }

}

阶段(“”){
环境{
JENKINS_AUTH=凭证(“”)
//在此处使用之前,请添加带有jenkins user:密码的credentail
}
台阶{
剧本{
def getEc2List=生成作业:“get-ec2-by-tag”,参数:[
字符串(名称:'envTagValue',值:“${envTagValue}”),
字符串(名称:“OS”,值:“${OS}”)
]
logUrl=getEc2List.absoluteUrl+'consoleText'
log=sh(脚本:'curl-u{JENKINS_AUTH}-k'+logUrl,
returnStdout:true).修剪()
//解析日志以提取ip
...
}
}
}