1、jenkins服务器和各节点服务器之间,要配置基于密钥的登录 (本实例基于www用户)
(省略)
2、创建相应的目录,并授权属主属组为www用户
/deploy/tmp 临时目录
/deploy/tar 存放打包后的目录
/opt/wwwroot 远程服务器目录
/web/ 网站目录
3、配置jenkins
![](https://box.kancloud.cn/be5ceec23de2d45ff19ca128cd0a2add_972x413.png)
![](https://box.kancloud.cn/19d29d5194499acff551ada991ca5d46_1033x511.png)
![](https://box.kancloud.cn/259033444b4b999fdea37f85fbb85ca3_983x379.png)
构建成功后,创建一个tag,并传送到git服务器上
![](https://box.kancloud.cn/485a9a871181f327691762b6eabd16a3_1122x581.png)
4、编写Deploy和回滚脚本
[www@jenkins scripts]$ cat Deploy1.sh
#!/bin/bash
SrcDir="/var/lib/jenkins/workspace/test_yyg"
DeployCode="/deploy/tmp"
DstDir="/opt/wwwroot"
WebSite="/web/"
PRONAME="test_yyg"
if [ $# == 1 ];then
Ver_NUM=$(echo $1)
cd $SrcDir
if [ ${Ver_NUM} == 'latest' ];then
#版本回退到上一个版本
git reset --hard HEAD^
COMMITID="$(git rev-parse --short HEAD)"
ssh www@10.2.11.245 "rm -rf /web/${PRONAME} && ln -s /opt/wwwroot/${PRONAME}-${COMMITID} /web/${PRONAME}"
else
#版本回退到任意版本,请输入版本COMMITID
git reset --hard ${Ver_NUM}
ssh www@10.2.11.245 "rm -rf /web/${PRONAME} && ln -s /opt/wwwroot/${PRONAME}-${Ver_NUM} /web/${PRONAME}"
fi
else
cd $SrcDir && git pull
COMMITID="$(git rev-parse --short HEAD)"
#把版本库里获取的代码,拷贝一份到部署目录里,并且重命名这个项目(按照项目名-commitID号),并且把不要的目录删除掉,比如.git
PKGNAME="${PRONAME}-${COMMITID}"
cp -rf ${SrcDir} ${DeployCode}/ && cd ${DeployCode} && mv ${PRONAME} ${PKGNAME}
cd ${DeployCode}/${PKGNAME} && rm -rf .git
cd ${DeployCode} && tar zcf ${PKGNAME}.tar.gz ${PKGNAME}
#通过scp命令,把对应的目录拷贝到远程计算机中
scp -r ${DeployCode}/${PKGNAME}.tar.gz www@10.2.11.245:${DstDir}/
ssh www@10.2.11.245 "cd ${DstDir} && tar xf ${PKGNAME}.tar.gz"
#通过ssh远程连接到10.2.11.245服务器,创建软连接
ssh www@10.2.11.245 "rm -rf /web/${PRONAME} && ln -s /opt/wwwroot/${PKGNAME} /web/${PRONAME}"
fi