zoukankan      html  css  js  c++  java
  • Jenkins+Sonar质量门禁【实践篇maven版】

    Jenkins+Sonar质量门禁【实践篇-maven运行版】

    配置文档百度挺多的,就不展开来了,找类似这种参考文档:

    https://www.tpisoftware.com/tpu/articleDetails/563

    首先很遗憾的告诉大家,maven版做不了质量门禁!只能扫描!!!

    效果撑死,只能做到这样(只扫描,不中断):

     

         就我们公司项目里,jenkins建的maven任务是最多的,所以我也首选用maven项目测试,然而11月尾叫了解,各种测试下来没有进展。那时还特意去官网注册,生成SonarQube token,配置到jenkins凭证上,以便在jenkins发布中使用token代替账号密码的方式去操作sonarqube,还下载中文汉化包进行汉化。

      然而配置任务发布报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/sonar/batch/bootstrapper/IssueListener,SonarQube scanner exited with non-zero code

      搞了1~2天,从此被抓去干别的活了。。。没错,就是去搞虚拟机迁移,因为公司买了新服务器,需要把伪服务器(家用台式机改造的linux系统,装了个virtualbox)的虚拟机迁移到新服务器上(2网段)。而这台测试机器刚好也要挪走,话说当时想直接把jenkins装在系统上,而不是docker上,因为想着以后一直用。

      安装过程有个诡异的问题,不知道是不是2网段跟默认0网段有什么冲突,各种方式装jenkins(java -jar war包、tomcat跑war包,甚至yum 直接装),无一不遇到首次安装jenkins,插件安装失败问题:

    不要告诉我这个方法:

    1 sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g;s#http://www.google.com#https://www.baidu.com#g' default.json
    2 
    3 http://jenkins访问ip/jenkins/pluginManager/advanced 
    4 上面的 Update Site url 改成 mirrors.tuna.tsinghua.edu.cn 。。。

        试过很多遍,无解。竟然改完之后,重启jenkins,修改过的配置文件还是没改过前的。且考虑到,装完之后还要配置很多东西,什么git、java、maven,还要根据报错信息装缺漏的插件。。。    

      无奈只能搞回docker版的jenkins,话说docker恢复安装环境确实快。

    1、恢复镜像:原服务器上docker save,新服务器docker load 

    2、数据恢复:各种映射到宿主机的数据目录拷贝复制

    3、恢复服务:docker run -v 跑起来即可

    上面都是流水文,交代下背景,下面干货来了!

      话说我在jenkins建的maven项目里,报错信息看不到解决办法。所以干脆模拟整个过程:进去docker jenkins里面,git 拉项目,然后手动运行sonar扫描。

      因为公司项目不敢在pom.xml 添加东西,所以借来了小俊子给的helloworld java 项目。然后扫描成功了。

    首先贴上maven配置

    为啥要贴上这个Build图,到时pipeline篇会提到

     Post Steps加上Analysis properties配置,如下:

    sonar.login=admin    
    sonar.password=admin
    # 项目key 保证唯一
    sonar.projectKey=java
    # 项目名字
    sonar.projectName=xxxx-test-maven
    sonar.projectVersion=1.0
    sonar.language=java
    sonar.sourceEncoding=UTF-8
    
    # sonar.sources是源文件所在的目录
    sonar.sources=src/main/java
    sonar.projectBaseDir=.
    # 指定class目录 从sonarQube 4.12开始,sonar将会进行程序的动态检查,不配置sonar.java.binaries属性将会出错
    sonar.java.binaries=target/classes

    1、进去jenkins容器

    docker exec -it xxxx bash

    2、进入jenkins worksapce目录

    3、克隆hello-world.git项目

    (趁某俊把这个项目还是设置公开,大家有需要赶紧下下来,哈哈哈,我已经粘到我gitee上了,下一篇会说到)

    git clone https://gitee.com/xie-zijun/hello-world.git

    4、修改pom.xml 文件,添加插件引入:

    <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.2</version>
    </plugin>

    加个题外话,其实我们公司maven项目也能加,因为这堆代码要放到build和plugins里面的,如果pom.xml没有这两个标签,加上去即可。就是下面这个意思:

    <!--maven打包插件-->
      <build>
          <plugins>
            上面那坨代码
        </plugins>
     </build>

    4、手动运行扫描

    bash-5.1# /usr/local/maven/bin/mvn install sonar:sonar -Dsonar.host.url=http://192.168.2.170:9090

     5、浏览器进去sonar页面看:

      其实上面手动扫描运行成功之后,基本已经没啥大问题,配置到jenkins上的maven项目里,发布就行了。(特别注意要在pom.xml添加插件引入代码,因为要借用jenkins容器里面的sonar scaner工具去扫描) 

    当我欢喜地给我领导看效果时候,他不是要这种效果(我还欢喜地想把这个sonar客户端装到一台windows虚拟机上,让开发他们为所欲为,装到一半的时候才说不是要这种效果 = =)

      他要检测到代码bug之后,不让进行下一步发布操作,让开发改好bug再发布。。。

  • 相关阅读:
    2020-2021-1 20209305 《Linux内核原理与分析》第九周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第八周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第七周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第六周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第五周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第四周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第三周作业
    2020-2021-1 20209305 《Linux内核原理与分析》第二周作业
    2020-2021-1 20209309《Linux内核原理与分析》第十二周作业
    2020-2021-1 20209309《Linux内核原理与分析》第十一周作业
  • 原文地址:https://www.cnblogs.com/windysai/p/15742808.html
Copyright © 2011-2022 走看看