@nalan90
2018-12-11T07:31:51.000000Z
字数 3746
阅读 1257
环球易购
说明:分支的创建RD跟QA两种角色都会涉及,RD创建新分支开发新的需求、修复bug,QA创建新的分支进行预发/生产环境的发布,目前公司代码发布系统APOLLO使用tag进行上线,所以QA会基于release、hotfix分支创建对应的tag,发布代码到指定的环境(预发、生产)。生产环境发布四小时后业务正常,release分支合并到master分支。
说明:当前Affiliate开发分支合并到release分支是可以直接push上去,release分支没有设置相应的权限,合并过程缺少code review过程。建议将release分支设置为protected,指定core review的负责人才有相应的合并权限,并承担core review的职责。
发起Merge Request

创建Merge Reqeust

选择分支

对比代码,指定code review负责人,提交请求

code review

选择项目及发布环境

选择对应的tag,填写其他详细信息

选择项目及发布环境

选择对应的tag,填写其他详细信息

说明: 以Affiliate项目为例,目前所有的计划任务都采用的是HTTP URL的请求方式,代码上线之后需要在计划任务管理平台(webmin)添加相应的任务。
/usr/bin/curl http://affiliate.gw-ec.com/interface/access/index
说明:以Affiliate项目为例,对外的API接口与计划任务都放在affiliate/Apps/interface/controllers目录下,wiki并不适合管理API接口,新部署的文档管理平台YAPI,新开发的接口直接添加即可,Affiliate/MSS等系统原有的接口需要迁移过来。可在线调试接口。

说明:预发布跟生产环境使用相同的数据库,如有db的变更,必须在代码发布到预生产之前找相应的DBA提交工单进行变更操作。以添加表为例
CREATE TABLE `af_material` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增 id',`web_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '网站ID',`name` varchar(30) NOT NULL DEFAULT '' COMMENT '素材名称',`form` varchar(20) NOT NULL DEFAULT '' COMMENT '格式',`create_by` varchar(64) NOT NULL DEFAULT '' COMMENT '操作者',`update_by` varchar(64) NOT NULL DEFAULT '' COMMENT '修改者',`is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除,0-未删除,1-已删除',`is_show` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否显示,0-不显示,1-显示',`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间,mysql自动更新',PRIMARY KEY (`id`),KEY `idx_update_time` (`update_timestamp`),KEY `idx_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='素材表';
注意事项: SQL工单执行后,需要连接对应的从库判断数据库变更是否成功,成功后才能通知QA发布线上代码。
说明:对于开发的需求涉及的表,大概的业务逻辑在活动日志->注释栏描述清楚,提交QA时方便快速的进行测试。
示例如下(建议将git分支加上):

说明:新开发的后台功能,需要添加指定的菜单,然后分配权限,若需要添加的菜单较多,建议直接通过DB运维平台录入(代码上线后),菜单较少则后台人工录入。
INSERT INTO af_menu (menu_id, name, module, controller, action, is_show, allow_all, fid, sort, create_time, create_user, update_time, update_user) VALUES(null, '素材列表', 'admin', 'material', 'index', 1, 0, 606, 0, '2018-09-13 10:34:47', 'lsm', '2018-09-13 17:24:21', 'lsm'),(null, '主题列表', 'admin', 'theme', 'index', 1, 0, 606, 0, '2018-09-13 10:35:26', 'lsm', '2018-09-13 17:25:30', 'lsm'),(null, '添加主题页面', 'admin', 'theme', 'add-view', 0, 1, 606, 0, '2018-09-13 18:04:31', 'lsm', '2018-09-13 18:20:22', 'lsm'),(null, '添加主题保存', 'admin', 'theme', 'do-add', 0, 1, 606, 0, '2018-09-13 18:05:38', 'lsm', '2018-09-13 18:20:29', 'lsm'),(null, '隐藏主题', 'admin', 'theme', 'do-hidden', 0, 1, 606, 0, '2018-09-13 18:06:23', 'lsm', '2018-09-13 18:20:34', 'lsm'),(null, '显示主题', 'admin', 'theme', 'do-show', 0, 1, 606, 0, '2018-09-13 18:07:07', 'lsm', '2018-09-13 18:20:41', 'lsm'),(null, '推荐主题', 'admin', 'theme', 'do-add-recommend', 0, 1, 606, 0, '2018-09-13 18:07:56', 'lsm', '2018-09-13 18:20:45', 'lsm'),(null, '取消主题推荐', 'admin', 'theme', 'do-cancel-recommend', 0, 1, 606, 0, '2018-09-13 18:08:55', 'lsm', '2018-09-13 18:20:50', 'lsm');
说明:开发过程中若需要改动一个底层的方法,首先得查找一下有多少地方调用该方法,若不确定该方法的重要性可找原作者进行沟通,修改后除了测试当前新开发的逻辑,至少还需要测试一个其他调用该逻辑的功能。目前两个前端站点的代码使用同一套,修改任何一个前端站点的逻辑都需要确认是否会影响其他业务逻辑。