如何从Jenkins管道中以前的构建中获取日志?
在我的詹金斯管道中,第一阶段执行自由式作业。因此,我需要从该作业中获取输出/日志,因为它将返回一个将在第二阶段使用的IP字符串如何从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
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
...
}
}
}