作者:知乎用户链接:https://www.zhihu.com/question/20694803/answer/41004645来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。先上图
如果看懂了的话就不用看下面说明了。。。如果看懂了的话就不用看下面说明了。。。---------------------# 背景这个项目刚到v0.5,只上了几次线了。远不是成熟项目,只能作为参考。估计后续还得改。欢迎大家提建议~项目是 Java Spring MVC项目。前台端代码在一个项目里。版本管理采用maven + git(stash),任务管理用JIRA,文档管理用Confluence。发布系统是公司内部的发布系统,而不是Bamboo。# 几个概念## ops最中间的那个大方框。ops系统,公司运维做的,是用来发布项目的。从git库中拷出代码相应的branch,根据maven的profile 编译代码,测试,部署可执行文件到server上,重启应用。ops有两个系统,线上和线下。就是大框里面的两个小框。有office的是办公室发布系统(线下)的。automan-xxx 就是对应不同的部署应用。因为branch,profile和server不一样,不同的应用有不同的功能。大致功能是:* 线下开发 automan-dev* 线上开发 automan-dev* 线上测试 automan-alpha* 线上测试 automan-beta* 线上运营 automan* 个人调试 automanXXXX下面是branch,profile,server的含义。## branchgit的分支。可以理解成 按用途归类的版本集合。### 各分支的功能* master 用于线上发布* feature-xxx 用于添加功能,添加完删除* develop 用于合并feature分支。* release 用于发布前的测试,发布完删除* bugfix-xxx 用于修复develop和master分支的bug。### 各分支的关系和流程图
## profileprofile是maven的参数。maven根据不同的profile,选择不同的编译配置,从而编译出不同配置的可执行文件。### 不同profile的不同用途和编译配置| 名称 | 用途数据库 | 外部环境 || -----------| ----------------------------------------------| -----------|| offline | 线下和本机测试线下,开发数据库 | 线下 || develop | 线上develop分支测试线下,开发数据库 | 线上 || alpha | 线上alpha测试线下,测试数据库 | 线上 || online | 线上beta测试和线上环境线上,产品数据库 | 线上 |## server
运用部署的主机,分线上和线下两套主机。线上主机又分线上测试和线上产品主机。线上测试按不同用途有三组主机:develop,alpha和beta。
因为我们项目没有绑定域名,所以不需要修改host。直接访问对应主机的ip或者域名+端口就可以了。
流程
主要流程有三个:添加新功能,修复Bug和发布新版本。
添加新功能发 新功能或改进 类型问题 到 JIRA 比如 ATM-54 重新设计API接口 已解决
把问题分配给自己(修复“经办人”)
根据问题的代码(上面功能的代码为ATM-54)从develop检出本地功能分支。比如 feature/ATM-54 或者 简写 ATM-54
添加功能
在本地测试通过
提交到本地库。commit message以 功能的代码(比如ATM-54)开头。比如“ATM-54 重新设计API接口”
push分支到远程
搭建线下测试环境(已有测试环境只需要修改branch)
测试功能。如果有bug,修改代码,跳到5。
搭建线上测试环境(已有测试环境只需要修改branch)
在线上develop环境测试通过
提交pull请求
找人 review代码并merge到develop和master。
修复Bug发 bug类型问题 到 JIRA 比如 ATM-57 版本太多显示不全
把问题分配给自己(修改“经办人”)
根据问题的代码(比如上面问题的代码为ATM-57)从master检出本地Bug修复分支。比如 bugfix-ATM-57 或者 简写 ATM-57
修复bug
在本地测试通过
提交到本地库。commit message以 问题的代码(比如 ATM-57) 开头。比如"ATM-57 修复 版本太多显示不全"
push分支到远程
在线下环境测试通过(小问题可省略)
在线上develop环境测试通过
提交pull请求
找人 review代码并merge到develop和master。
发布新版本给develop添加tag:v+版本号+a
从develop检出release_latest
在ops中部署 automan-alpha
线上alpha测试
如有bug,按照 修复bug流程 修复,并merge到release_latest。重新部署。
给release添加tag:v+版本号+b
在ops中部署 automan-beta
线上beta测试
如有bug,按照 修复bug流程 修复,并merge到release_latest。重新部署。
给release添加tag:v+版本号
merge到master。
在ops中部署 automan