TA的每日心情 | 无聊 5 小时前 |
---|
签到天数: 1052 天 连续签到: 2 天 [LV.10]测试总司令
|
一、背景
一般来说业务流程是SDK必须呈交标识符,然后会全自动促发CI/CD,依据校对最终来预判标识符是不在意能被merge上去。而标识符的纯度却不能被管制到。那么我们怎样才能来开展管制呢?总体上是采用以上的业务流程:
gerrit呈交标识符-->促发jenkinsjob--->校对后下载sonar研究报告-->shellJAVA加载sonar的API,给予关键因素的纯度统计数据后预判是不在意之积--->jenkins将执行者最终离开给gerrit-->依据jenkins的离开最终预判是不在意merge标识符。
二、实际顺利实现
在这些简单的业务流程中,最基本的是gerrit和jenkins的嵌入式以及怎样才能下载sonarqube研究报告。当然本版不在意讲授该怎样才能嵌入式。shellJAVA大概能够分为以上五步:
1、预判sonar研究报告已经下载获得成功,保证是这次呈交相关联的sonar研究报告。
2、curl命令去加载api,给予关键因素纯度统计数据。
3、依据纯度统计数据离开各不相同的值,离开1指出纯度未达标,jenkinsjob也会功亏一篑,同时jenkins会给gerrit离开-1操作方法;离开0指出纯度第一关,jenkinsjob会是获得成功竞技状态,jenkins会给gerrit离开+1操作方法。
后面充分考虑将最终目标移去出来,毕竟可能多个team关注的纯度指标各不相同,不过多个JAVA都必须执行者最终目标.于是就有了两个JAVA:sonarCheckStatus.sh、sonarCheckQuality.sh;
最终目标sonarCheckStatus.sh的实际顺利实现如下:
- #!/bin/bash
- #set-ox
- projectName=$1
- url="$SONAR_address"
- functiongetStatus(){
- urls=$url'api/ce/component?component='$projectName;
- flag=12;
- while[$flag-gt5]
- do
- result=`curl-k-XGET$urls`;
- #ifsonarprojectisprivate
- #result=`curl-k-u$username:$password-XGET$urls`;
- analyze=`echo$result|awk-F:'{print$11}'|awk-F'"''{print$2}'`;
- if["$analyze"=="SUCCESS"];then
- echo"sonarqubereportanalyzesuccessfully!!!!!Pleaseexecutecheckscript"
- break;
- fi
- echo"reportisanalyzing!!!sleep20secondsandscanningagain"
- sleep20;
- ((flag--));
- done
- if[$flag-le5];then
- echo"Don'tgettheanalysisresult,pleaseadjustthevalueofflagorcheckurl&projectName"
- return1;
- fi
- }
- getStatus
复制代码 这些JAVA主要是充分考虑到一般来说sonarqube分析项目时都绝不会超过五分钟,所以每次加载sonar的api来预判研究报告是不在意全自动更新,除非全自动更新了,就离开0,除非sonar还在分析研究报告,就午睡20秒后继续加载该API,再继续预判,除非120秒都没获得成功,JAVA就离开-1,jenkinsjob就功亏一篑了。
三、其他
1.为什么选用shellJAVA,而不在意pythonJAVA?
毕竟最开始的充分考虑是所有的linux模块都能够直接选用shellJAVA,而pythonJAVA必须全自动装设python,出于最重影响的充分考虑,选取用shell.不过后来发现其顺利实现在的模块会全自动装设Python2.7.大家选取自己会的语言即可。
2.sonarqube的研究报告仍旧处于pending竞技状态,造成JAVA仍旧离开-1,标识符仍旧不能merge上去。
这些问题是虽然sonarqube本身造成的,sonarqube的重大任务执行者是单伫列的形式,Beauvoisin重大任务阻断的时候,会block住某些的重大任务.而标识符不能merge是毕竟jenkins给gerrit离开了-1,开发女同学看到-1后绝不会同意合并标识符到主支系.(在gerrit上也能够设置:只要jenkins离开了-1,就严禁其他人merge标识符)。
3.JAVA如果置于哪里
JAVA置于jenkinsjob中,是借由JAVA离开1或0来管制jenkinsjob的竞技状态,从而给gerrit离开相关联的竞技状态码。
4.业务流程的优劣势
特点是:该业务流程在整体上满足纯度管制的需求,能够对关键因素纯度统计数据开展黄线.所以不必须太多更少的依赖于。
不足之处是:虽然是借由sonarqube的能力来管制纯度,所以必须依赖于sonarqube的竞技状态,当sonar停机时,该业务流程不能正常运行.所以,必须更少的成本来完成并管理shellJAVA。搜索多测师。
|
|