通用业务平台设计(三):自动化打包平台建设

前言

在上家公司,随着业务的不断拓展,需要打多个包来支持业务的快速发展;这篇文章主要为大家分享在构建自动化打包平台过程中一些经验总结以及躺过的坑。

通用业务平台系列

  • 通用业务平台设计(一):概览
  • 通用业务平台设计(二):扩展多国家业务
  • 通用业务平台设计(三):自动化打包平台建设

自动化打包平台

  • 生成nginx接口混淆(55个老接口),并在测试和预生产环境进行部署

    • 数据库表-注意新的url加唯一索引(生成策略:每级:产品名首尾字母,加随机数),表结构 老接口地址->新接口地址;表结构如下
-- 基础配置表
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接口进行访问)

    • 从git上拉原始代码并复制到新的目录下

    • 对源代码的秘钥 进行进行替换(调用python进行替换)

    • 替换图片(调用python进行替换)

    • 执行混淆后的接口替换(调用python进行替换)

    • 对源代码产品名替换(调用python)

    • 增加无效资源(调用python)

    • 增加无效方法

    • 将新形成的代码提交git(调用shell)

    • 针对新的代码打不同环境的apk包并将包上传至oss(调用shell脚本)

    • 将新的包的资源地址发邮件给 开发及测试

  • 生产环境处理

    • APP开发用新的机器打 生产包(生产域名替换)
    • 发上线申请邮件,发需要混淆接口的产品名,附件APP包
    • 运维执行生产环境nginx混淆,并将新包上传生产环境的OSS
    • 测试进行验证
  • 效率提升

    手工方式 自动化打包平台
    打包效率 1个包/3人天 1天/N个包(实际半年打包 412个,实际3个/1人天)
    受制约因素 开发打包 产品提供素材、测试、运营

总结

  • 本篇博文介绍了自动化打包平台的建设,建设该平台使得出包效率提高了10倍+;
  • 当我们在做重复工作时,一定要思考一下做成自动化,提高我们的工作效率,从而将自己的精力放到更具有创造性的工作中去;
  • 大家有相关经验也可以在评论区共享下。

你可能感兴趣的:(笔记,自动化,业务平台,通用业务,架构,java)