[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查看
软连接mvn命令到/usr/bin下
ln -s /usr/local/services/maven/bin/mvn /usr/bin
从170上使用job import插件拷贝一个job到176上测试.或者直接scp job过去也可以
测试构建发现报错 permission denied
chmod 777 /user/local/maven/repo
owner 该改的也改下
再构建一下测试 成功了
这里发现编译之后的jar包的owner是nfsnobody,所以上面需要使用777的权限
或者属主更换为nfsnobody
测试了删除repo下面的文件 重新编译
下载下来的文件权限是755
测试在不同节点上构建
master
指定jenkins-slave03