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

2023-11-02

前言

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

通用业务平台系列

自动化打包平台

  • 生成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倍+;
  • 当我们在做重复工作时,一定要思考一下做成自动化,提高我们的工作效率,从而将自己的精力放到更具有创造性的工作中去;
  • 大家有相关经验也可以在评论区共享下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通用业务平台设计(三):自动化打包平台建设 的相关文章

  • 服务器里的文件启动失败404,云表服务器启动失败问题汇总

    这是在安装本地版时经常发生的问题 10个人 就有7个人都会出现这样的问题 出现这样的问题 怎么解决呢 首先 想要连接服务器 必须要开启数据库的服务 其次 服务器其实是 锁 住的 那么你要连接服务器 肯定得有钥匙 这里的钥匙可以看成是授权文件
  • Qt之布局管理——停靠窗口

    QDockWidget类继承与QWidget类 用于停靠窗口的管理 在主窗口中 先设置中心控件 然后实例化QDockWidget对象 通过setFeatures 设置停靠窗口的窗体特性 通过 setAllowedAreas 设置窗体可停靠的
  • 1200*C. Stripe

    题意翻译 给定一整数n 下面有n个数a i 求将该数列分割成两个非空数列且两个数列内数字的和相等的方案数 1 lt n lt 10 5 a i 的绝对值不大于10000 解析 前缀和 include
  • QT 实现16进制与字符串互转

    QT 实现16进制与字符串互转 文章目录 QT 实现16进制与字符串互转 前言 一 字符串QString转换16进制 二 16进制转换为字符串QString 三 正则表达式限制输入16进制 四 文本自动补全空格功能的实现 前言 QT在界面时
  • matlab图像处理——直方图及直方图均衡化

    imhist 对rice png和增强亮度后的 增强对比度后的图进行直方图展示 imhist 对于brightness 和 contrast的不同 clear all brightness I imread rice png J imadd
  • 洛谷Java入门代码之分苹果

    题目描述 八尾勇喜欢吃苹果 她现在有 m m 100 m m le 100 m m 100 个苹果 吃完一个苹果需要花费 t t 100 t t le100 t t 100 分钟 吃完一个后立刻开始吃下一个 现在时间过去了 s s 1000
  • LevelDB简介

    LevelDB简介 综述 leveldb整体架构 提供接口 db h 技术 memtable WAL sstable Manifest cache LRU cache LRU的优缺点 filter levelDB初始化 compaction

随机推荐

  • 专治疑难系列 - 无法激活网络的解决方法

    博客主页 Passerby Wang的博客 CSDN博客 系统运维 云计算 Linux基础领域博主 所属专栏 转治疑难系列 上期文章 无 如觉得博主文章写的不错或对你有所帮助的话 还望大家多多支持呀 关注 点赞 收 藏 评论 目录 一 问题
  • Python将txt文件内容转换成列表

    参考 Python将txt文件内容转换成列表 云 社区 腾讯云 方法一 coding utf 8 f open r ip txt r a list f print a f close 方法二 coding utf 8 f open r ip
  • Sublime Text 3 安装Go语言相关插件gosublime《小白也能学会的教程》

    Sublime Text 3 安装Go语言相关插件gosublime 序言 这篇文章是自己的亲身体会 今天为了安装gosublime可是找了一堆教程 但大部分都无功于返 有些甚至点开后都是直接复制粘贴过来的 一度心灰意冷 就在我快要暴躁的时
  • Java 实现 QQ 登陆

    点击上方蓝色字体 选择 标星公众号 优质文章 第一时间送达 1 前言 个人网站最近增加了评论功能 为了方便用户不用注册就可以评论 对接了 QQ 和微博这 2 大常用软件的一键登录 总的来说其实都挺简单的 可能会有一点小坑 但不算多 完整记录
  • C++ Primer Exercise 5.18

    Understanduing the difference between C and C therefore know the computer language deeper vector
  • MySQL数据库锁的实现原理(面试)

    mysql的锁类型 一般其实就是表锁 行锁和页锁 一般myisam会加表锁 就是myisam引擎下 执行查询的时候 会默认加个表共享锁 也就是表读锁 这个时候别人只能来查 不能写数据的 然后myisam写的时候 也会加个表独占锁 也就是表写
  • 如何查看宝塔面板入口?

    终端输入 bt default
  • 【实例】python中简单分句,通过替代句号 &给句尾(不是句首)添加序号

    gt gt gt fn open E 西方哲学史 txt read gt gt gt fn fn replace t r n gt gt gt s open E 西方哲学史分句 txt w gt gt gt s s write fn 想要给
  • 蓝桥杯2018年第九届真题——乘积尾零

    乘积尾零 一 题目内容 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 如下的 10 行数据 每行有 10 个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871
  • docker : unable to prepare context: context must be a directory

    1 美图 2 背景 创建了一个dockerfile base lcc lcc negix ll total 8 drwxr xr x 3 lcc staff 96 4 8 08 47 drwxr xr x 4 lcc staff 128 4
  • 介绍两种常见软件开发模式:“敏捷”和“瀑布”

    写在最前面 敏捷开发模式更加适合项目型的系统 瀑布开发模式更适合产品型系统 设计后多次迭代 以上属于个人理解 有不同的见解欢迎大家一起讨论 在软件开发时 经常面对的第一个项目实现决策是 我们应该使用哪种开发方法 这是一个引起很多讨论 和激烈
  • 图解Flink内核源码-尚硅谷大数据培训

    大佬硬核手撕Flink源码 首发内核源码图解 Flink内核源码大汇总 关注公众号 回复 Flink 还能获取全部内核讲解视频以及文档资料 1 Flink任务提交流程 相关文章 重磅 Flink源码解析环境准备及提交流程之环境准备重磅 Fl
  • XAMPP Mysql/MariaDB 忘记密码

    对于本地的本地的phpMyAdmin 忘记登录密码怎么办哪 看看下文 能省去你不少时间和精力 首先进入DOS 开一个cmd 第一步 先停掉MySQL服务 cmd命令行 c gt sc stop mysql XAMPP 手动点击MySQL g
  • 层次分析法模型(数学建模学习)

    本系列参考清风老师的数学建模课程 层次分析法模型 一 模型介绍 一 模型引入 对于方案选择类问题 评价类问题采用层次分析法 The ayalytic hierarchy process AHP 模型进行评分 之后评分高的就是最佳方案 二 模
  • Wireshark对SMTP抓包分析

    本文主要使用Wireshark对邮件客户端使用SMTP协议发送邮件的过程进行抓包分析并使用telnet命令进行简单操作 1 SMTP简介 简单邮件传输协议 英语 Simple Mail Transfer Protocol 缩写 SMTP 是
  • 《自然语言处理》-文本生成实验(基于MindSpore),避免的坑,保姆式教学

    最近我的导师去了解一下华为的MindSpore框架 觉得很有意思然后就让我跑一下他的文本生成实验 不过其中有很多是他的实验手册没怎么写清楚的点 我在这里为各位一个一个排坑拉 本实验都是来源于华为的文本生成实验手册 只是里面很多内容写的不清楚
  • 声速的测量的实验原理和应用_【声速测量】实验须知

    操作常见错误 1 忘记记录源频率f0 或选错源频率f0 每一台设备的源频率都不相同 在导轨左 右两侧可以找到 如下图为 37420 2 超声波的发射器和接受器端面不平行 甚至不与轨道垂直 解决办法 拧松发射器或接收器后面的螺丝 然后调整端面
  • 清除浮动伪元素/双伪元素

    清除浮动 问题 在做浮动布局的时候 如果父级盒子嵌套了子级盒子 如果父级盒子没有设置固定的高度 那么里面的子级盒子浮动以后 父级盒子的高度就不会被撑开 显示默认的高度为0就会影响后面的盒子显示布局 说明 用浮动布局的时候我们必须要嵌套一个父
  • Linux创建LVM分区与扩容

    1 划分物理磁盘格式 针对要增加的硬盘进行格式化 fdisk dev sdb 欢迎使用 fdisk util linux 2 23 2 更改将停留在内存中 直到您决定将更改写入磁盘 使用写入命令前请三思 Device does not co
  • 通用业务平台设计(三):自动化打包平台建设

    前言 在上家公司 随着业务的不断拓展 需要打多个包来支持业务的快速发展 这篇文章主要为大家分享在构建自动化打包平台过程中一些经验总结以及躺过的坑 通用业务平台系列 通用业务平台设计 一 概览 通用业务平台设计 二 扩展多国家业务 通用业务平