#auto-deploy自动化部署
这里所说的自动化部署,其实是一种半自动的代码部署,不同于jenkins的持续集成,也不同于puppet,ansible的自动部署。
本项目主要是根据公司实际情况,而定制的一种自动化部署工程: ##背景介绍 公司项目发布过程如下:
-
开发人员上传war包至svn目录,并发邮件告知运维其svn目录;
-
运维人员从svn地址下载war包至本地;
-
运维人员ssh2登陆远程服务器:
- 备份服务war包
- 停止服务
- 上传新war至相应的目录
- 启动服务
- 查看log
##提供功能
-
开发人员部署申请
关于svn文件的上传,暂时仍沿用,后期可以更换成web上传即可。
-
服务部署管理
运维人员管理每个服务部署的情况,即哪个服务部署在哪台服务器的哪个目录上;
-
服务器管理
服务器的管理,即每台服务的ip地址,及ssh登陆所需用户名、密码;
-
部署申请审核
-
自动化部署
自动部署功能通过监听部署申请审核通过的消息,进行自动化部署,主要进行如下操作:
- 获取部署申请信息;
- 根据服务的部署申请信息,获取服务的部署信息;
- 根据服务的部署信息,获取服务的物理服务器信息;
- 根据部署申请信息,从远程svn地址下载war包至本服务器的临时目录;
- 通过ssh2登陆远程服务器,执行如下操作;
- 备份服务war包;
- 停止服务;
- 上传新war包;
- 启动服务;
- 关闭远程连接;
- 删除本地war包;
因为我们后端的服务框架采用dubbox,所有服务都是多节点部署,所以显示的停止服务在低谷请求是允许的。