Jenkins流水线获取触发任务结果报getResult()无匹配方法问题咨询
错误根因
报错No signature of method: java.lang.String.getResult()的核心原因是:
build步骤执行完成后返回的是 WorkflowRun 类型的对象,该对象本身才具备getResult()方法;但你将返回值赋值给了env.buildResults2,而Jenkins流水线中所有env开头的环境变量仅支持字符串类型存储,对象赋值时会被自动强制转换为字符串,因此调用getResult()时会提示字符串类型没有对应方法。
解决方案
修改代码逻辑,不要用env存储非字符串类型的对象,改用普通流水线变量存储build返回结果即可,正确示例如下:
// 用普通变量存储build返回的Run对象 def buildResults2 = build job: 'demo-spring-boot', parameters: [string(name: 'BRANCH', value:'main')], propagate: false, wait: true // 直接调用Run对象的getResult()方法获取执行结果,手动终止的任务结果为ABORTED def buildResults = buildResults2.getResult() // 如果需要将结果存入环境变量供后续其他步骤使用,再赋值给env env.buildResults = buildResults
如果需要跨Stage共享build对象,可将变量定义在pipeline代码块外层的全局作用域,不要使用env存储即可。
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

