前阵子老美的Audit要求各个开发组截图各自repository的Sonar Analysis Report,我跑去Sonarqube一看。。。好家伙!全是红灯,简直惨不忍睹git
固然这其中有历史问题,由于咱们是半路接管的欧美team的code,不少issue都是old code所遗留的。github
不逃避责任,其中也有一部分是咱们后续提交的新代码形成的,经过项目2年来的日积月累,issue多的有点积重难返,sonarqube虽然在每次jenkins build都会生成report,可是咱们却没有把它做为build成功失败的一个硬指标。只要build成功经过QA测试就行了嘛!管他娘的sonar quality gateweb
为了出一份体面漂亮的report给audit,我不得不马不停蹄的checkout -b quick_fix_sonar_issues, 花了一成天的功夫把block和critical的issue降到了阈值如下。docker
临阵磨枪的我体会到了如下3个痛点app
囧则思变!如何改进咱们的开发流程?在代码开发阶段就能让Sonar分析出问题?强制owner必须解决完issue才能提交代码?
嗯!是时候对目前存在弊端的开发流程进行改进了!工具
先介绍下目前的基础设施:测试
老的流程:优化
加了3步,使得new code经过sonar检测成为一个硬性指标,把issue扼杀在萌芽中,把锅甩在最前面ui
什么?你居然不知道Jenkins是个啥?!那你操个哪门子的心去优化开发流程,好好搬你的砖,写你的bug!
咳咳!建议你转发本文给负责devops的同事,请他吃饭让他帮忙配置spa
它的做用是生成在Jenkins和Github之间生成webhook,似的PR能够自动触发Jenkins的Build
它的做用是让Jenkins去触发Sonar的分析
没据说的Sonar?没有现成的Sonar Server? 额,继续请devops吃饭吧...
它的做用是 当Sonar检测完毕后,把生成的report和issue的分析以comments的方式写回到Github的PR中
废话很少,只贴关键配置,红线部分很重要
Advanced里能够勾上这一条(虽然是Dangerous),由于咱们Github是企业版,因此能提PR的人是有权限控制的,若是是用官网的github管理代码请慎用这个选项,建议使用黑白名单来控制触发的条件。
如下是Sonar的配置,很重要,注意analysis mode只能选择preview,preview mode不会真正的在Sonar上生成report哦。
Jenkins的安装,Sonar的安装啥的,教程我就不放link了,这种大路教程一搜一大堆(我我的建议你用docker安装)
做为一个开发,我以为这些基本的,能提高工做效率的工具仍是要掌握一下的,并非说只有devops才会用到这些工具,谁不喜欢偷懒呢,这些都是偷懒的好帮手。
截止发稿时,这个流程还存在一些些小bug,好比preview mode的sonar分析不能跟sonar中quality gate进行结合,sonar js不能分析parse有问题的js文件等等,还显得不够完美,咱们也在经过其它的workaround来100%实现理想中的开发流程,若是你有好的建议欢迎留言。