TonyCanon
V1
2021/05/13阅读:77主题:默认主题
Beetle静态代码扫描流程
Beetle App Sonar 扫描拦截流程
被拦截后的状态及操作约定
- 该次编译记录 等待静态代码扫描结果/已经被拦截 时状态
- 【灰度】 列:【灰度】按钮不可操作状态(disable),阻塞用户灰度操作
- 【下载】 列: 不显示 【查看】按钮, 阻塞用户查看二维码扫码安装操作
- 【再次编译】列: 不可再次编译,被拦截必须修改代码后 重新生成Tag编译
- 分支操作
- 不可向上合并分支,阻塞分支合并流程
- 通知
- 页面主动弹窗通知
- 企业微信消息通知:
- 通知范围:分支开发者列表、测试人员列表、负责人[zhangzhiyang、sumin]
- 通知内容:[具体触发人] [具体操作(测试编译、集测编译、提测)] 的 [具体分支]-[具体Tag] 发现[m]BUG、[n]漏洞、[l]坏味道,超过拦截阀值。被拦截,不能进行[下载安装包、灰度、再次编译、分支合并]操作,请尽快修复后重新 [具体操作(测试编译、集测编译、提测)],具体扫描结果可到 [具体结果地址] 查看
基础流程&逻辑
- 触发静态代码扫描
- 每次生成新Tag的编译操作(编译[测试、集测]/提测)
- 同时触发 编译Job 和 静态扫描Job
- 合并分支时,有未编译过的增量代码
- 只触发静态扫描Job
- 触发 可配置的拦截操作节点时,先判断操作有没有被设置拦截
- 可配置拦截操作
- 编译[测试、集测] 、提测、子分支合并
操作未被设置拦截
- 静态扫描结果只通知,不拦截
编译操作已被设置拦截时 不同可能场景的处理方式
基础原则:
- 只要静态扫描Job正常运行 & 结果命中拦截规则,则按约定做拦截
- 其他任何异常 / 结果未命中拦截规则,则统一按 未命中拦截规则处理,不阻塞后续流程
- Sonar Job 有异常、失败 必须及时自动通知方案负责人[zhangzhiyang、sumin] 及时处理, 因Job异常导致的遗漏,方案负责人[zhangzhiyang、sumin]承担后果
场景(Case)& 处理方式(Result)
- Case1:若静态代码扫描Job执行失败
- Result 1.1:
- 企业微信消息通知固定的负责人[zhangzhiyang、sunmin]:[具体的扫描Job]执行异常,请尽快处理
- 不影响编译流程
- 按未命中拦截规则正常处理
- Case2: 若编译Job执行异常
- Result 2.1:
- 企业微信消息通知 触发 编译/提测 操作的RD:[具体Job]编译失败
- 不做静态扫描拦截流程&提醒
- 若 静态扫描Job 进行中
- 中断扫描Job
- 若 Sonar 平台该任务在队列/正在执行中
- 只要保证不做静态代码扫描拦截&提醒就可以
- 若编译Job已完成
- Case3:若静态代码扫描Job 进行中
- Result 3.1:
- Beetle 编译记录按约定显示等待状态【下载不显示“查看”按钮,灰度不可操作、不可再次编译、不可向上合并分支】
- 若静态代码扫描Job 已完成
- Case4:若 该次任务在 Sonar 平台 后台任务 执行中
- Result 4.1:
- 保持状态,不影响拦截流程
- Beetle 编译记录按约定显示等待状态【下载不显示“查看”按钮,灰度不可操作、不可再次编译、不可向上合并分支】
- 若 该次任务在 Sonar 平台 后台任务排队中
- Case5:如果在队列前3名
- Result 5.1:
- 保持状态,不影响拦截流程
- Beetle 编译记录按约定显示等待状态【下载不显示“查看”按钮,灰度不可操作、不可再次编译、不可向上合并分支】
- 企业微信消息通知触发编译/提测操作的RD:队列中,稍等,可到[Sonar平台任务队列地址]查看具体进度
- Case6:如果在队列3名之后
- 统一处理:
- 消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体分支-具体Tag]因为Sonar平台任务队列排队任务数量过多,已达到[具体数量],跳过强拦截流程,但可能会有代码风险,请关注后续的扫描结果通知,尽量避免[合并分支、灰度、发版]操作, 可到[Sonar平台任务队列地址]查看具体进度
- 不做编译强拦截 ,Beetle 编译记录正常显示未被拦截状态
- 仍然要关注队列中任务结果
- Result 6.1 : 若结果完全没有命中拦截规则,正常结束流程
- Result 6.2 : 若结果中有命中拦截规则
- 消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] [具体操作(测试编译、集测编译、提测)] 的 [具体分支]-[具体Tag] 发现[m]BUG、[n]漏洞、[l]坏味道,超过拦截阀值。但因任务队列任务较多,未拦截!!!请尽快修复后重新 [具体操作(测试编译、集测编译、提测)],具体扫描结果可到 [具体结果地址] 查看
- Case 7: 若已出扫描结果
- Result 7.1 : 若结果完全没有命中拦截规则,正常结束流程
- Result 7.2 : 若结果中有命中拦截规则
- 页面主动弹窗通知
- 按拦截约定消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] [具体操作(测试编译、集测编译、提测)] 的 [具体分支]-[具体Tag] 发现[m]BUG、[n]漏洞、[l]坏味道,超过拦截阀值。被拦截,不能进行[下载安装包、灰度、再次编译、分支合并]操作,请尽快修复后重新 [具体操作(测试编译、集测编译、提测)],具体扫描结果可到 [具体结果地址] 查看
- 按约定拦截此次编译记录的 [灰度、查看二维码、再次编译]操作
- 若编译Job未完成 & 静态代码扫描 结果已出
- Case 8 : 若结果完全没有命中拦截规则
- Result 8.1 :
- 按位命中拦截处理,不影响编译流程,编译成功后,正常显示结果
- Case 9 :若结果中有命中拦截规则
- Result 9.1 :
- 不影响编译流程
- 页面主动弹窗通知
- 按拦截约定消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] [具体操作(测试编译、集测编译、提测)] 的 [具体分支]-[具体Tag] 发现[m]BUG、[n]漏洞、[l]坏味道,超过拦截阀值。被拦截,不能进行[下载安装包、灰度、再次编译、分支合并]操作,请尽快修复后重新 [具体操作(测试编译、集测编译、提测)],具体扫描结果可到 [具体结果地址] 查看
- 按约定拦截此次编译记录的 [灰度、查看二维码、再次编译]操作
子分支合并操作已被设置拦截时 不同可能场景的处理方式
- 无任何编译记录 & 无新增代码
- Beetle 拦截 合并操作
- 无任何编译记录 & 有新增未编译代码
- 只触发静态代码扫描Job
- 页面主动弹窗通知:因为已配置 子分支合并代码扫描 & 当前分支有未编译增量代码,需等待扫描结果通过后合并,若需紧急合并,请临时关闭子分支合并代码拦截操作,再次操作
- 企业微信消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] 触发合并的 [具体分支] , 因为已配置 子分支合并代码扫描 & 当前分支有未编译增量代码,需等待扫描结果通过后合并,若需紧急合并,请临时关闭子分支合并代码拦截操作,再次操作
- Case 1: 若静态扫描Job执行异常
- Result 1.1
- 企业微信消息通知固定的负责人[zhangzhiyang、sunmin]:[具体的扫描Job]执行异常,请尽快处理
- 企业微信消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] 触发合并的 [具体分支] , 因为Sonar job 异常,跳过强拦截流程,自动合并,可能会有代码风险,请避免直接【灰度、发版】操作,具体扫描结果可到 [具体结果地址] 查看
- Case 2: 若扫描结果未命中拦截规则
- Result 2.1
- 进入自动合并代码判断流程
- Case 3: 若扫描结果命中拦截规则
- Result 3.1
- 主动弹窗显示命中规则的问题列表 & 提醒修复后、编译提测
- 企业微信消息通知 分支开发者 & 测试人员 & 负责人[zhangzhiyang、sunmin]:[具体触发人] 触发合并的 [具体分支] ,发现[m]BUG、[n]漏洞、[l]坏味道,超过拦截阀值。被拦截,不能进行分支合并操作,请尽快修复后重新 [编译、提测、合并分支],若需紧急合并,请临时关闭子分支合并代码拦截操作,再次操作,具体扫描结果可到 [具体结果地址] 查看
高优先级需要支持的基础拦截流程
-
编译[集测] 操作 - 静态代码扫描 - 命中拦截规则 - 拦截[灰度、查看二维码、再次编译]操作,通知到开发者列表、测试人员、负责人[zhangzhiyang、sunmin]
作者介绍
TonyCanon
V1