jenkins构建第一个java工程

使用docker容器安装Jenkins跟直接在宿主机上安装,在构建工程时会有很多差异,会遇到更多的坑。本人使用centos7+jenkins/jenkins:rhel-ubi8-jdk11。Jenkins构建方式为git库+maven插件(docker-maven-plugin),构建流程为:

1、jenkins容器从git仓库中拉取代码

2、Jenkins容器使用maven工具进行进行打包,并利用docker-maven-plugin构建项目的docker镜像

3、镜像构建完成后,push至docker-registry仓库

4、容器利用ssh连接到目标机器,执行pull镜像-->杀死原有实例-->最后执行docker run命令启动实例。

遇到问题:

1、在maven打包完项目,执行docker-maven-plugin进行构建镜像时报错:

Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on project todo-demo: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: No such file or directory -> [Help 1]

出现的原因是Jenkins容器中没有docker,所以docker-maven-plugin也无法执行docker任务。如果jenkins是直接安装在宿主机中则没有这个问题,可以直接调用宿主机的docker完成docker-maven-plugin的构建。

解决方法为将宿主机中的docker映射到容器中,并且将容器的用户添加进宿主机的docker用户组中(使其有权限调用宿主机的docker):

docker run -p 8090:8080 -p 50000:50000 --name jenkins-docker --add-host gitlab.xxx.com:106.xxx.xxx.xxx --add-host docker-registry.xxx.com:106.xxx.xxx.xxx \
-v /etc/localtime:/etc/localtime:ro -e TZ="Asia/Shanghai"  -v /apps/docker/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock     -v /etc/docker:/etc/docker     -v /usr/bin/docker:/usr/bin/docker --group-add=991 \
 jenkins/jenkins:rhel-ubi8-jdk11

其中:
-v /var/run/docker.sock:/var/run/docker.sock     -v /etc/docker:/etc/docker     -v /usr/bin/docker:/usr/bin/docker就是将宿主机的docker映射进容器

--group-add=991的目的是将容器的用户添加进宿主机的docker用户组,991是通过命令cat /etc/group|grep docker查询而来

2、在成功打包、push镜像后报错:

ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [126]]

分析原因为,容器ssh到目的机器后,jenkins中配置用户的权限不够,添加相关权限就解决问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值