Jenkins Pipeline下载JFrog制品时GenericDownloadExecutor.java:52空指针异常
问题根因
你遇到的NullPointerException是Jenkins Artifactory插件的经典触发场景,对应GenericDownloadExecutor.java第52行的空值是未初始化的BuildInfo实例:老版本插件要求调用下载/上传接口时必须显式传入BuildInfo对象,否则执行逻辑中访问该空对象就会抛出空指针。
解决方案
方案1:显式传入BuildInfo参数(兼容性最好,所有版本通用)
修改你的Pipeline脚本,在调用download接口前初始化BuildInfo并作为参数传入即可,修改后代码如下:
def artifactoryServer = Artifactory.server("Artifactory-instance-id") artifactoryServer.connection.timeout = 300 // 新增:初始化BuildInfo实例 def buildInfo = Artifactory.newBuildInfo() def artifactDownloadSpec = """{ "files": [ { "pattern": "aod-libs-release/path-to-artifact/deployment/${env.DP_VERSION}/deployment-${env.DP_VERSION}.zip", "target": "./artifacts" }, { "pattern": "aod-libs-release/path-to-artifact/dm-auth-web-services/${env.VERSION}/dm-auth-web-services-${env.VERSION}.war", "target": "./artifacts" } ] }""" echo "download spec " + artifactDownloadSpec echo "artifactory server " + artifactoryServer // 新增buildInfo参数 artifactoryServer.download spec: artifactDownloadSpec, buildInfo: buildInfo
方案2:升级Artifactory插件
如果你不想修改脚本,可将Jenkins的Artifactory插件升级到3.10.0及以上版本,该版本之后官方修复了无BuildInfo参数时的空指针问题,会自动初始化默认BuildInfo实例。
额外检查项
- 确认Jenkins全局配置中Artifactory实例的ID确实为
Artifactory-instance-id,且绑定的账号有对应制品仓库的下载权限 - 确认
env.DP_VERSION和env.VERSION两个变量已正确赋值,脚本输出的制品路径实际存在于Artifactory中
内容的提问来源于stack exchange,提问作者user123456789
相关产品推荐
相关产品推荐

