jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚

此文的方案支持回滚,支持回滚,支持回滚,重要的事情说三遍!

 

前言:
此文的解决方案,只能解决释放运维一半的工作量,为何一半?因为需要部署代码的服务器集群,都事先安装配置好项目运行所需的环境,例如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,安装插件,如果安装了忽略
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第1张图片
jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第2张图片

3、配置需要集群部署的服务器ssh连接,找到系统管理-》系统设置-》Publish over SSH-》SSH Servers ,点击新增配置ssh,点击高级可展开更多配置,如有多台就配置多台,配置图中几项即可,然后点击保存应用。
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第3张图片


三、构建服务器集群部署代码
1、jenkins找到新建任务,输入任务名称,选择构建一个自由风格的软件项目,点击确定
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第4张图片

 

2、找到general,

2.1、勾选丢弃旧的构建,设置保持构建的天数输入7天,设置保持构建的最大个数输入10,可按需设置
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第5张图片
2.2、勾选参数化构建过程,设置两个文本参数,status-构建动作,默认值有deploy-发布,roll_back-回滚;version-构建记录id值,默认值为0
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第6张图片


3、找到源码管理,选择svn,输入svn地址,选择svn用户,没有则新建,Check-out Strategy选择Emulate clean checkout by first deleting unversioned/ignored files, then 'svn update',勾选Quiet check-out
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第7张图片


4、找到构建触发器,其中,触发远程构建,定时构建,轮询SCM很有用,但不属于此篇文章范畴,构建触发器都不勾选,后续再写博文讲解。
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第8张图片


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
 
jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第9张图片

构建过程的脚本功能说明:
脚本分为 发布 和 回滚,
发布:
先把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 [email protected]::test_php_deploy /home/www/test_new/ --password-file=/etc/rsyncd.passwd –delete
chmod -R 777 /home/www/test_new/
用于需要部署代码的服务器同步拉取代码
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第10张图片
其中,rsync命令中的模块test_php_deploy对应的path要改成与构建过程的脚本的deploy_path一致的路径,vim /etc/rsyncd.conf修改,因此可得知,rsync同步的是deploy_path目录的代码到其他服务器的。

7.2、可以点击add server添加多台需要部署代码的服务器
 jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第11张图片

7.3、增加构建后操作步骤-》E-mail Notification,输入邮箱,有错误构建会发送邮件通知
jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第12张图片
8、点击应用保存

四、一键自动化部署
1、点击Build with Parameters,输入status构建动作,deploy部署或roll_back回滚,输入roll_back则需要输入version构建记录ID,version构建记录ID对应的是构建历史的ID,例如#37的37

jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第13张图片

jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第14张图片

点击开始构建,然后构建历史会出现一次构建历史,点击查看细节

 

2、在构建历史可点击控制台输出,查看构建过程,如果失败查看原因
jenkins+svn+rsync+php_一键自动化部署可持续化集成服务器集群项目_支持回滚_第15张图片

如想了解更多技术架构文章,扫码关注我的个人公众号以及转发分享哈~

你可能感兴趣的:(jenkins)