写在前面:公司代码发布体系总结
本人是测试人员,包括我在内,团队中有2名测试,整个研发不含测试大概10名(后台前端)。除了负责测试工作,还兼任负责发布公司测试环境及生产环境的代码。
代码环境及架构
公司所属行业为微信电商,使用java流行的MVC框架(这个我还不是很懂,不知道用了Spring哪些东西),这个了解过,只是并不深入,可以参考我的另一篇入门摘抄的java web基础。言归正传:
后台编程语言:java、UI框架kendo ui
web容器:tomcat
微信端:js、html、vue、css、jsp等
代码管理:git
构建工具:maven
部署操作系统:CentOS7
数据库:MySQL
其他数据库或工具:Redis、Memche、RPC、activemq、阿里云sso
桌面开发工具:eclipse
代码发布的主要流程
Created with Raphaël 2.1.0 研发编码/修改 发版到测试环境 测试确认 发版到生产环境 yes no
流程中两次发版目前都是执行我手动写的脚本。
Created with Raphaël 2.1.0 发版需求 git pull代码 maven编译构建 发布代码到tomcat 重启tomcat 开始测试
当然git由于有分支管理,发布的代码需要根据实际情况进行切换。这里git的分支管理就不再赘述。
由于手工发版实属重复劳动,后来约定定时测试环境每日定时发版2次,一次是中午12点10分,一次是晚上7点30.使用Linux的crontab。解放后的双手就是生产力。
1 | crontab -e #编辑任务,进入文本编辑窗口,输入以下内容。两个脚本分别是拉取代/构建maven项目和发版代码用 |
PS:此处有坑一个,mvn.sh和updateSites.sh中存在git和mvn这两个非系统自带命令,使用crontab定时运行会缺乏环境变量,导致不能执行。解决办法:在脚本中添加:source /etc/profile。
生产环境的代码严格执行测试环境的代码为基准,所以发布的代码直接从tomcat的webent下面打包,唯一的不同是执行打包的时候会讲配置文件替换为生产。配置文件在代码库中做了统一的管理。
Created with Raphaël 2.1.0 发起发版任务 配置文件check 配置文件替换 代码打包 sftp方式拉取代码包 备份源代码发布代码包 发布代码包 上线回归测试