使用Jenkins DSL拉取Artifactory信息时getArtifactoryServers方法报错求助
报错原因
Jenkins Artifactory 3.x版本对内部API做了不兼容调整,你之前使用的getArtifactoryServers()方法已被正式移除,这是升级后脚本失效的直接原因。
修复后代码
替换原方法为3.x版本新增的getArtifactoryServerConfigs()即可,其余获取配置的方法保持兼容:
// Get Default Artifactory Info 适配Artifactory Plugin 3.x版本 import jenkins.model.* def instance = Jenkins.get() def defaultServer = Jenkins.instance.getDescriptor('org.jfrog.hudson.ArtifactoryBuilder').getArtifactoryServerConfigs()[0] def defaultArtifactoryName = defaultServer.getName() def defaultArtifactoryUrl = defaultServer.getUrl() def defaultArtifactoryCredId = defaultServer.getDeployerCredentialsConfig().getCredentialsId()
注意事项
- 若Jenkins配置了多台Artifactory服务器,可遍历
getArtifactoryServerConfigs()返回的列表,按服务器名称筛选目标实例 - 若Job DSL开启了脚本安全沙箱,需申请上述方法的调用权限,否则会触发安全拦截
- 该API适配Artifactory Plugin 3.0~3.12.x全版本,和你当前使用的3.11.4版本完全兼容
内容的提问来源于stack exchange,提问作者Thomas Lord
相关产品推荐
相关产品推荐

