51Testing软件测试论坛

标题: 软件测试之怎样才能硬性管制标识符纯度 [打印本页]

作者: lsekfe    时间: 2021-12-15 14:05
标题: 软件测试之怎样才能硬性管制标识符纯度
一、背景
  一般来说业务流程是SDK必须呈交标识符,然后会全自动促发CI/CD,依据校对最终来预判标识符是不在意能被merge上去。而标识符的纯度却不能被管制到。那么我们怎样才能来开展管制呢?总体上是采用以上的业务流程:
  gerrit呈交标识符-->促发jenkinsjob--->校对后下载sonar研究报告-->shellJAVA加载sonar的API,给予关键因素的纯度统计数据后预判是不在意之积--->jenkins将执行者最终离开给gerrit-->依据jenkins的离开最终预判是不在意merge标识符。
[attach]135811[/attach]
二、实际顺利实现
  在这些简单的业务流程中,最基本的是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的实际顺利实现如下:
  1.  #!/bin/bash
  2.   #set-ox
  3.   projectName=$1
  4.   url="$SONAR_address"
  5.   functiongetStatus(){
  6.   urls=$url'api/ce/component?component='$projectName;
  7.   flag=12;
  8.   while[$flag-gt5]
  9.   do
  10.   result=`curl-k-XGET$urls`;
  11.   #ifsonarprojectisprivate
  12.   #result=`curl-k-u$username:$password-XGET$urls`;
  13.   analyze=`echo$result|awk-F:'{print$11}'|awk-F'"''{print$2}'`;
  14.   if["$analyze"=="SUCCESS"];then
  15.   echo"sonarqubereportanalyzesuccessfully!!!!!Pleaseexecutecheckscript"
  16.   break;
  17.   fi
  18.   echo"reportisanalyzing!!!sleep20secondsandscanningagain"
  19.   sleep20;
  20.   ((flag--));
  21.   done
  22.   if[$flag-le5];then
  23.   echo"Don'tgettheanalysisresult,pleaseadjustthevalueofflagorcheckurl&projectName"
  24.   return1;
  25.   fi
  26.   }
  27.   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。搜索多测师。








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2