Jenkins Pipeline使用rtDownload时未找到Artifactory文件如何抛出错误
Jenkins rtDownload 缺失构件主动报错解决方案
rtDownload默认无匹配构件时不会抛出异常,可通过以下两种方式实现缺失报错:
方法1:使用原生failNoOp参数(推荐)
JFrog Artifactory插件1.2.x及以上版本支持failNoOp配置项,只要无任何文件被下载就会直接抛出异常终止流水线,直接在下载规则中添加即可:
Spec JSON写法示例:
rtDownload ( serverId: '你的Artifactory服务配置ID', spec: """{ "files": [ { "pattern": "libs-release-local/*.ear", "target": "./本地存储路径/", "failNoOp": true } ] }""" )
闭包DSL写法示例:
rtDownload serverId: '你的Artifactory服务配置ID', { downloadSpec { files { pattern 'libs-release-local/*.ear' target './本地存储路径/' failNoOp true } } }
方法2:后置手动校验(兼容旧插件版本)
如果使用的插件版本不支持failNoOp参数,可在下载完成后校验本地路径下是否存在目标文件,不存在时手动抛出错误:
// 执行下载 rtDownload ( serverId: '你的Artifactory服务配置ID', spec: """{ "files": [ { "pattern": "libs-release-local/*.ear", "target": "./ear_download/" } ] }""" ) // 校验下载结果 def targetFiles = findFiles glob: 'ear_download/*.ear' if (targetFiles.size() == 0) { error "未从Artifactory匹配到任何符合规则的.ear构件,流水线终止" }
注:上述示例中的
findFiles是Jenkins Pipeline Utility Steps插件提供的内置方法,无需额外引入第三方依赖。
内容的提问来源于stack exchange,提问作者Swanbe
相关产品推荐
相关产品推荐

