在我的詹金斯管道中,第一阶段执行自由式作业。因此,我需要从该作业中获取输出/日志,因为它将返回一串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()
答案 0 :(得分:0)
getEc2List
的类型为RunWrapper,也是getEc2List.getPreviousBuild()
的类型。
RunWrapper
不提供getLog()
api,而是由rawBuild提供。
您可以通过调用getEc2List
或getEc2List.rawBuild
获得getEc2List.getRawBuild()
的rowBuild。
但是getRawBuild()
不在@Whitelisted
的{{1}}中,因此您将在jenkins日志中得到以下消息:
不允许使用方法的脚本 org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild。管理员可以决定是批准还是拒绝 此签名。
一种选择,是让Jenkins管理员更改脚本批准
另一个选项,操作如下:
RunWrapper