51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1242|回复: 0
打印 上一主题 下一主题

[转贴] 软件测试之怎样才能硬性管制标识符纯度

[复制链接]
  • TA的每日心情
    无聊
    前天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-12-15 14:05:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一、背景
      一般来说业务流程是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的实际顺利实现如下:
    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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 20:31 , Processed in 0.068124 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表