@nalan90
2018-12-11T15:31:51.000000Z
字数 3746
阅读 837
环球易购
说明:分支的创建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');
说明:开发过程中若需要改动一个底层的方法,首先得查找一下有多少地方调用该方法,若不确定该方法的重要性可找原作者进行沟通,修改后除了测试当前新开发的逻辑,至少还需要测试一个其他调用该逻辑的功能。目前两个前端站点的代码使用同一套,修改任何一个前端站点的逻辑都需要确认是否会影响其他业务逻辑。