前言
在上家公司,随着业务的不断拓展,需要打多个包来支持业务的快速发展;这篇文章主要为大家分享在构建自动化打包平台过程中一些经验总结以及躺过的坑。
通用业务平台系列
自动化打包平台
-- 基础配置表
CREATE TABLE `hx_url_config` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`config_no` varchar(64) DEFAULT '' COMMENT '配置编码',
`config_name` varchar(80) NOT NULL DEFAULT '' COMMENT '配置名称',
`file_name` varchar(80) NOT NULL DEFAULT '' COMMENT '文件名称',
`config_url` varchar(80) NOT NULL DEFAULT '' COMMENT '配置地址',
`type` int(2) DEFAULT NULL COMMENT '类型,(1:配置类型,2:配置地址)',
`status` int(2) DEFAULT NULL COMMENT '环境(1:测试,2:预生产,3:生产1,4:生产2)',
`sort` int(2) DEFAULT NULL COMMENT '权重',
`create_uid` varchar(32) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`param1` int(2) DEFAULT NULL COMMENT '预留字段1',
`param2` int(4) DEFAULT NULL COMMENT '预留字段2',
`param3` int(11) DEFAULT NULL COMMENT '预留字段3',
`param4` varchar(32) DEFAULT '' COMMENT '预留字段4',
`param5` varchar(64) DEFAULT '' COMMENT '预留字段5',
`param6` varchar(128) DEFAULT '' COMMENT '预留字段6',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='配置表';
-- 原接口表
CREATE TABLE `hx_old_interface_url` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`old_url` varchar(80) NOT NULL DEFAULT '' COMMENT '访问地址',
`create_uid` varchar(32) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`param1` int(2) DEFAULT NULL COMMENT '预留字段1',
`param2` int(4) DEFAULT NULL COMMENT '预留字段2',
`param3` int(11) DEFAULT NULL COMMENT '预留字段3',
`param4` varchar(32) DEFAULT '' COMMENT '预留字段4',
`param5` varchar(64) DEFAULT '' COMMENT '预留字段5',
`param6` varchar(128) DEFAULT '' COMMENT '预留字段6',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_hx_old_interface_url_old_url` (`old_url`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='原接口表';
-- 新接口混淆表
CREATE TABLE `hx_new_interface_url` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`app_product_name` varchar(32) NOT NULL DEFAULT '' COMMENT '包产品名',
`hx_old_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '原来接口的id',
`new_url` varchar(80) NOT NULL DEFAULT '' COMMENT '访问地址',
`create_uid` varchar(32) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`param1` int(2) DEFAULT NULL COMMENT '预留字段1',
`param2` int(4) DEFAULT NULL COMMENT '预留字段2',
`param3` int(11) DEFAULT NULL COMMENT '预留字段3',
`param4` varchar(32) DEFAULT '' COMMENT '预留字段4',
`param5` varchar(64) DEFAULT '' COMMENT '预留字段5',
`param6` varchar(128) DEFAULT '' COMMENT '预留字段6',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_hx_new_interface_url_new_url` (`new_url`),
UNIQUE KEY `uk_hx_new_interface_url_appname_oldid` (`app_product_name`,`hx_old_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='新接口混淆表';
-
三个环境的nginx配置文件,并上传至git
location /ag/gdnf/gcoev {
rewrite ^ /ag_gdnf_gcoev last;
}
location /ag_gdnf_gcoev {
proxy_pass http://192.168.168.62:8888/get/config/onoff;
}
-
调用测试环境shell脚本进行拉取并reload对应环境的nginx
-
上传固定的 图片,秘钥文件,google的json文件
-
形成新的包(APP开发人员通过swagger接口进行访问)
-
生产环境处理
- APP开发用新的机器打 生产包(生产域名替换)
- 发上线申请邮件,发需要混淆接口的产品名,附件APP包
- 运维执行生产环境nginx混淆,并将新包上传生产环境的OSS
- 测试进行验证
-
效率提升
项 |
手工方式 |
自动化打包平台 |
打包效率 |
1个包/3人天 |
1天/N个包(实际半年打包 412个,实际3个/1人天) |
受制约因素 |
开发打包 |
产品提供素材、测试、运营 |
总结
- 本篇博文介绍了自动化打包平台的建设,建设该平台使得出包效率提高了10倍+;
- 当我们在做重复工作时,一定要思考一下做成自动化,提高我们的工作效率,从而将自己的精力放到更具有创造性的工作中去;
- 大家有相关经验也可以在评论区共享下。