Git规范
1、master必须跟线上代码同步;
2、每次发布必须同步生成一个tag,说明需包含完整日期和具体需求描述;
3、过程分支在发布合并入master后,进行删除;
4、commit描述力求准确,严禁含糊不清,出现:合并、优化、bug修复等不明所以的描述,以功能完成为基本提交单元;
5、工作步骤:
5.1、从master创建分支,前缀必须是:release/xxxx;
5.2、如多人工作,从分支创建feature/xxxx;
5.3、合并feature到release分支,进行测试;
5.4、测试无问题后,release分支合并入master,发布线上服务;;
5.5、以master版本创建tag,详细记录本次功能和改动情况;
5.6、删除无用分支;
6、严禁直接在master上进行开发;
一、readme要求
1.1、放置在项目根目录,名称全小写:readme.txt;
1.2、开头第一行创建日期;
1.3、项目部署前置条件,逐一列举描述;
1.4、模块说明,共有多少个模块,各个模块的功能说明;
例:
创建日期:2019-04-01
*********************************************
部署前置条件:
1、安装ImageMagick 5.4.1,用于图片编辑功能;
2、加入融信的IP白名单,发邮件给xxxxx;
3、通知CMS系统,xxxxx;
各模块说明:(共5个)
1、FinancingMallAssembly:提供XXXX服务;
二、Dubbo API规范
1、禁止jar内加入任何第三方SDK,如必须可以在readme.txt里面进行依赖描述;
2、接口一经发布,名称、参数禁止修改,可通过新增新接口来升级发布;
3、废弃接口添加注解@Deprecated,最少保留一个季度才可做下线处理并必须在readme.txt中说明具体下线日期;
4、接口调用方必须进行登记后方可使用;
readme.txt样例:
*****************************************
风控查询API
*****************************************
依赖说明:
1、spring-common;
2、xxxxxxxxxxxxxxx
@Deprecated:
1、com.edianzu.ecm.Xxxxx,2019-10-02下线,替代接口:com.edianzu.ecm.Xxxxxxx;
三、对外接口规范
1、定义:所有提供给非本项目工程调用的接口都属于对外接口,包括dubbo接口和http接口;
2、对外接口在每个项目要有独立项目进行维护;
3、http接口必须对参数进行混淆MD5校验,涉及到钱、用户信息等重要接口加入来源IP校验;
4、项目根目录必须包含readme.txt,必须包含以下信息:
a、调用系统名称
b、开始调用时间
c、调用IP信息
d、作用描述
一、软件安装在:/data/software/(视硬盘大小进行选择,但software固定),通过软链ln -s /data/software/xxx_2.x /usr/local/xxx;
二、项目部署在:
1、service部署在:/data/deploy-service;
2、web部署在:/data/deploy-web;
三、日志最少保存最近7天,必须要有自动清理配置;
1、Nginx日志保存路径:/data/logs/nginx/xxx.log;
2、Tomcat日志保存路径:/data/logs/tomcat-xxx/xxx.log;
3、Service日志保存路径:/data/logs/service/xxxx/xxx.log;
四、Tomcat配置要求:
1、统一使用版本:Apache Tomcat/7.0.xx
2、修改日志配置文件:logging.properties,关停以下日志输出:host-manager、localhost_access_log、localhost、manager;
3、修改server.xml,按需调整监听端口,注释AJP监听:
4、修改server.xml,禁用autoDeploy功能,设置autoDeploy=false;
5、根据需要调整JVM参数;
6、清空webapps下所有目录和文件;
五、所有线上服务争取拥有四级,最少需具备:2和4,时项目大小启用1和3;
1、dev-xxx.edianzu.cn:开发环境,用于开发人员使用,可以随时重启、调试;
2、test-xxx.edianzu.cn:测试环境,用于测试人员使用,更新和重启知会测试童鞋;
3、gray-xxx.edianzu.cn:灰度环境,用于线上服务备份、无感知更新切换和线上更新后确认;
4、xxx.edianzu.cn:线上环境,用于正式对外响应服务;
五、服务上线:
1、所有SQL通过效率和安全自检;
2、所有提供给测试的接口、权限进行剔除;
3、定时任务全部接入分布式任务调度平台;
4、日志接入ELK服务;
5、通过安全小组的安全审查;
6、接入服务监控平台;
7、部署服务:
a、群发短信、邮件上线,必须第一次空转输出日志,进行确认;
b、群发类上线应用,必须有小范围灰度使用确认;
c、APP发布更新,必须先版本更新确认后再放开更新提醒;
d、有备机服务更新,更新备机确认正常,流量切换到备机,然后更新另外一台并且设定为备机;