参加过两次公司生产环境的版本更新,最近一次让我萌生了开发一个自动化部署平台的念头。虽然网上也有很多的自动化部署软件,但仍是想本身动手写一个。一来是为了让平台更适应当前的实际状况,也利于之后本身对平台通用性的扩展;二来是为了锻炼本身,给本身的空闲时间找点事情作,不至于虚度时光。html
如下是整理出的初稿,想到的点比较简单,后面会持续完善。java
若是本文有幸被您看到,望能指点一二。linux
无论是积极的仍是消极的,请留下您的见解。git
程序开发好以后免不了部署。刚开始还好,手动打包、上传、部署,也不须要多长时间。可是随着规模的扩大,版本更新的频繁,以上看似简单的操做会变得愈来愈繁琐,耗时也会程直线上升。 手动部署的全部操做还不可重用,即每次操做都须要从头开始,浪费时间不说,不可靠和易出错也是显而易见的不足。
所以,能有一套程序帮咱们作这个事情势在必行。
自动化部署平台的初衷是最大化的简化部署的步骤,作到“自动化”。而人工只须要作一些简单的配置便可。shell
部署内容:
1. Java WEB部署
2. Java进程部署
部署来源:
1. 从版本服务器进行部署
2. 程序包上传部署
部署实现方式:
1. linux下
拟采用java+shell脚本实现
2. windows下
拟采用java+bat批处理脚本实现数据库
本自动化部署平台需包含一下功能
最终目的:最大化实现只要是经过本平台进行部署的工程,都能经过平台管理其完整的生命过程。其中包括项目的建立,更新,删除,以及项目运行期间的各类日志的抓取和展现。达到部分运维的效果。
a. 从版本服务器(svn/git)上获取最新代码
b. 自动打包(jar、war)
c. 支持程序包(jar、war)的上传
d. 支持工程内部配置文件的修改
e. 根据配置或者脚本自动部署
f. 支持经过平台对部署的工程进行试运行,启用,中止等功能
g. 部署过程当中的日志显示
h. 部署完后运行中的日志显示
i. 设置权限系统,不一样角色的用户登陆平台拥有不一样的操做权限
a) 开发人员:
b) 运维人员:
c) 管理人员:
d) 测试人员:
j. 支持数据库的操做(备份/更新/建立/删除)windows