Loading...
墨滴

TonyCanon

2021/05/12  阅读:55  主题:默认主题

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

2021/05/12  阅读:55  主题:默认主题

作者介绍

TonyCanon