https://github.com/jfrog/jenkins-artifactory-plugin/issues/133
我遇到了这个问题,柯南失败了,因为他在上传包时得到了一个错误'500'。
不幸的是,柯南(目前)没有重新尝试这个任务,因为我把他放在命令行参数中。
因此,我为Jenkins Pipeline编写了以下groovy脚本:
//上传至Conan (Artifactory)//有时,这2个进程试一试在同一时刻改变相同的值。因此我们重复这个步骤。Def max_retry_upload = 5为(i = 0;我< max_retry_upload;我+ +){试一试{client.run命令:"upload *——all——force——retry 5——retry-wait 10 -r ${name}——confirm".toString(), buildInfo: buildInfo打破}抓(例外e) {如果(i == max_retry_upload - 1)"当前构建结果:${currentBuild.result}"println"错误:无法上传,抛出异常…"扔e}其他的{println"当前构建结果:${currentBuild. "result}(将状态更改回SUCCESS)"println“警告:无法上传,请休眠并重试…”currentBuild。结果=“成功”睡眠(5 + 5 *数学.random ())//等待5 ~ 10秒}}
该脚本正在工作,以便Jenkins构建作业(也是在第一次上传失败时)。但不幸的是,他仍然认为上传的第一个错误是整个工作的错误。我想,当我抓到错误时,他应该忽略失败。“currentBuild。result已经被设置为FAILURE而不是SUCCESS。
可能是Artifactory插件首先捕获错误,然后设置“currentBuild”。“结果”到“失败”,然后重新抛出异常?
也许会很好,如果我们有一个额外的标志,让人工插件只是不写currentbuild.result?