问题描述
在使用Jenkins的 pipeline as code 特性时,遇到使用第三方jar的情况,使用了@Grab(group='org.restlet', module='org.restlet', version='1.1.6')
注解,但是在Jenkins job运行时下载依赖失败。
解决方法
grape默认时采用maven的 mvnrepository.com 来搜索依赖包,出问题的Jenkins master上是不能访问该仓库的,所以下载依赖失败。
在${user.home}/.groovy/目录下新增文件grapeConfig.xml,指定仓库地址为内网仓库或可访问的maven镜像仓库。
1 | <ivysettings> |
grapeConfig.xml的默认配置为
1 | <ivysettings> |
Jenkins中grape下载的第三方jar默认是缓存在${user.home}/.groovy/grapes/目录下。可以通过添加Jenkins的启动参数-Dgroovy.grape.report.downloads=true
和 -Divy.message.logger.level=4
,在jenkins的日志中观察第三方依赖的下载过程。
如果jenkins master采用docker方式安装时,使用jenkins用户登录,同时设置jenkins的user.home为JENKINS_HOME即可。