Jenkins CPS方法不匹配问题:已标记修复的JENKINS-58643在2.190.3.2版本中复现(Artifactory上传场景)
解决Jenkins Artifactory上传时的
artifactoryUpload方法不匹配问题 这个报错我太熟悉了!你遇到的是Jenkins Pipeline CPS执行模型和Artifactory插件方法调用的兼容性问题,对应JENKINS-58643——虽然这个问题标记为已修复,但在你用的Jenkins 2.190.3.2这个较旧版本里,直接调用server.upload还是会触发这个冲突。
给你两个可行的解决办法,优先推荐第一个,更稳妥:
方法一:改用Pipeline专用的rtUpload步骤
Artifactory插件专门为Pipeline设计了rtUpload步骤,完全适配CPS模型,能避开这个方法不匹配的问题。修改后的流水线代码如下:
stage('upload artifactory') { steps { sh "touch /tmp/blabla" sh "gzip /tmp/blabla" script { def server = Artifactory.server('myid') server.credentialsId = 'my-cred' def uploadSpec = """{ "files": [ { "pattern": "/tmp/blabla.gz", "target": "pkg/com/myentreprise/mystuff/scm/dumps/solr/" } ] }""" // 替换原有的server.upload为rtUpload步骤 rtUpload( server: server, spec: uploadSpec, failNoOp: true ) } } }
方法二:升级Artifactory插件(需注意兼容性)
如果一定要用server.upload的写法,可以尝试升级Artifactory插件到修复JENKINS-58643的版本,但要注意你的Jenkins 2.190.3.2版本对插件版本的兼容性,避免升级后出现其他问题。
简单说,核心问题就是旧版本里直接调用Java对象的方法会和CPS转换冲突,用插件提供的Pipeline原生步骤就能完美解决啦。
内容的提问来源于stack exchange,提问作者FF123
相关产品推荐
相关产品推荐

