[jenkins]-jenkins使用nfs共享maven仓库

目的:生产环境编译比较耗时,打算使用slave进行编译构建.但是项目的基础模块会有依赖性,A依赖B,如果使用传统的上下游或者主从方式,容易造成B在master上构建了,但是A是在slave上构建的,导致slave上的A打的依赖包不是最新的.

为了解决这个问题,打算使用nfs 共享.m2和maven_home

 

 

 

百度到的M2和MAVEN_HOME的差别

MAVEN_HOME is for Maven 1, M2_HOME is for Maven 2 and later.

Maven 2 was a complete rewrite from Maven 1 and was not backwards compatible. Having the two different _HOME variables means it is possible to run both on the same machine.

 

个人理解

.m2 是maven本地库

maven_home是maven的bin目录

maven下来的jar包都放在.m2库里

 

虚拟机:

jenkins master   192.168.10.170

jenkins slave     192.168.10.176

 

 

 

安装jenkins和添加节点 就不介绍了.

 

首先在jenkins-master上安装nfs服务器

yum install -y nfs-utils

vim /etc/exports  添加如下

/root/.m2 192.168.10.0/24(rw,sync)

/user/local/services/maven 192.168.10.0/24(rw,sync)

systemctl enable rpcbind.service

systemctl enable nfs-server.service

systemctl start rpcbind.service

systemctl start nfs-server.service

systemctl  stop firewalld

systemctl  disable firewalld

rpcinfo -p

exportfs -r

exportfs

 

#具体可以参考之前写的Centos7安装配置NFS服务和挂载

 

 

 

在jenkins-slave03上安装nfs客户端

yum install -y nfs-utils

systemctl enable rpcbind.service

systemctl start rpcbind.service

showmount -e 192.168.10.170

 

mkdir /root/.m2 && mount -t nfs 192.168.10.170:/root/.m2

mkdir /usr/local/services/maven && mount -t nfs 192.168.10.170: /usr/local/services/maven

 

完成之后df -h查看

[jenkins]-jenkins使用nfs共享maven仓库

 

软连接mvn命令到/usr/bin下

ln -s /usr/local/services/maven/bin/mvn   /usr/bin

 

从170上使用job import插件拷贝一个job到176上测试.或者直接scp job过去也可以

 

测试构建发现报错  permission denied

 

[jenkins]-jenkins使用nfs共享maven仓库

 

[jenkins]-jenkins使用nfs共享maven仓库

 

chmod 777 /user/local/maven/repo

owner 该改的也改下

[jenkins]-jenkins使用nfs共享maven仓库

再构建一下测试 成功了

 

[jenkins]-jenkins使用nfs共享maven仓库

 

[jenkins]-jenkins使用nfs共享maven仓库

 

 

 

 

这里发现编译之后的jar包的owner是nfsnobody,所以上面需要使用777的权限

或者属主更换为nfsnobody

[jenkins]-jenkins使用nfs共享maven仓库

 

[jenkins]-jenkins使用nfs共享maven仓库

测试了删除repo下面的文件 重新编译

下载下来的文件权限是755

[jenkins]-jenkins使用nfs共享maven仓库

 

 

 

 

 

测试在不同节点上构建

 

master

[jenkins]-jenkins使用nfs共享maven仓库

[jenkins]-jenkins使用nfs共享maven仓库

 

指定jenkins-slave03

[jenkins]-jenkins使用nfs共享maven仓库