jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚
此文的方案支持回滚,支持回滚,支持回滚,重要的事情说三遍!前言:此文的解决方案,只能解决释放运维一半的工作量,为何一半?因为需要部署代码的服务器集群,都事先安装配置好项目运行所需的环境,例如java项目需要tomcat,php项目需要nginx+php-fpm等。如果问有没有更好集群部署方案,都能连运行环境都统一自动化集群部署?答案肯定是有的,要用docker容器化集群,而不是服务器...
此文的方案支持回滚,支持回滚,支持回滚,重要的事情说三遍!
前言:
此文的解决方案,只能解决释放运维一半的工作量,为何一半?因为需要部署代码的服务器集群,都事先安装配置好项目运行所需的环境,例如java项目需要tomcat,php项目需要nginx+php-fpm等。
如果问有没有更好集群部署方案,都能连运行环境都统一自动化集群部署?答案肯定是有的,要用docker容器化集群,而不是服务器集群。此方案后续会更新博文讲解。
一、前期准备
1、代码分发服务器:192.168.0.1
2、需要部署代码的服务器:192.168.0.2
3、需要分发服务器安装好rsync服务,并配置好,用于分发代码。具体参照之前的文章rsync安装配置。
4、需要分发服务器安装好Jenkins服务,并配置好,用于一键自动化集群部署。具体参照之前的文章jenkins安装配置
5、需要 部署的服务器集群都安装好rsync服务,用于拉取代码
二、配置jenkins
1、浏览192.168.0.1:8080,访问安装好jenkins服务的分发服务器,输入之前安装时设置的账号密码登录
2、登录后找到,系统管理-》管理插件-》可选插件,搜索Publish Over SSH,安装插件,如果安装了忽略
3、配置需要集群部署的服务器ssh连接,找到系统管理-》系统设置-》Publish over SSH-》SSH Servers ,点击新增配置ssh,点击高级可展开更多配置,如有多台就配置多台,配置图中几项即可,然后点击保存应用。
三、构建服务器集群部署代码
1、jenkins找到新建任务,输入任务名称,选择构建一个自由风格的软件项目,点击确定
2、找到general,
2.1、勾选丢弃旧的构建,设置保持构建的天数输入7天,设置保持构建的最大个数输入10,可按需设置
2.2、勾选参数化构建过程,设置两个文本参数,status-构建动作,默认值有deploy-发布,roll_back-回滚;version-构建记录id值,默认值为0
3、找到源码管理,选择svn,输入svn地址,选择svn用户,没有则新建,Check-out Strategy选择Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update',勾选Quiet check-out
4、找到构建触发器,其中,触发远程构建,定时构建,轮询SCM很有用,但不属于此篇文章范畴,构建触发器都不勾选,后续再写博文讲解。
5、找到构建环境,也忽略不勾选配置
6、找到构建,增加构建步骤-》执行shell,输入以下内容
case $status in
deploy)
echo "status:$status"
backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/target"
deploy_path="/data/${JOB_NAME}/deploy_target"
if [ -d $backup_path ];then
echo "$backup_path is exists!"
else
mkdir -p $backup_path
fi
if [ -d $deploy_path ];then
echo "$deploy_path is exists!"
else
mkdir -p $deploy_path
fi
cp -r ${WORKSPACE} $backup_path/
cp -r ${WORKSPACE} $deploy_path/
echo "deploy done!"
;;
roll_back)
echo "status:$status"
echo "build_id:$version"
backup_path="${JENKINS_HOME}/jobs/${JOB_NAME}/builds/$version/target"
deploy_path="/data/${JOB_NAME}/deploy_target"
rm -rf $deploy_path
cp -r $backup_path $deploy_path/
echo "roll_back done!"
;;
*)
exit
;;
esac
构建过程的脚本功能说明:
脚本分为 发布 和 回滚,
发布:
先把svn拉下来的代码,备份到backup_path这个变量的目录里,再复制到deploy_path这个变量的发布目录里
回滚:
根据构建记录ID找到对应的备份代码目录,然后复制到deploy_path这个变量的发布目录里
7、找到构建后操作
7.1、点击增加构建后操作步骤,选择Send build artifacts over SSH
SSH Server-》Name,选择刚刚配置好的服务器集群的服务器
SSH Server-》Transfers-》Exec command,输入
rsync -vzrtopg root@192.168.0.1::test_php_deploy /home/www/test_new/ --password-file=/etc/rsyncd.passwd –delete
chmod -R 777 /home/www/test_new/
用于需要部署代码的服务器同步拉取代码
其中,rsync命令中的模块test_php_deploy对应的path要改成与构建过程的脚本的deploy_path一致的路径,vim /etc/rsyncd.conf修改,因此可得知,rsync同步的是deploy_path目录的代码到其他服务器的。
7.2、可以点击add server添加多台需要部署代码的服务器
7.3、增加构建后操作步骤-》E-mail Notification,输入邮箱,有错误构建会发送邮件通知
8、点击应用保存
四、一键自动化部署
1、点击Build with Parameters,输入status构建动作,deploy部署或roll_back回滚,输入roll_back则需要输入version构建记录ID,version构建记录ID对应的是构建历史的ID,例如#37的37
点击开始构建,然后构建历史会出现一次构建历史,点击查看细节
2、在构建历史可点击控制台输出,查看构建过程,如果失败查看原因
如想了解更多技术架构文章,扫码关注我的个人公众号以及转发分享哈~
更多推荐
所有评论(0)