暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

持续集成中 jenkins如何使用 sonarqube

specialApe logic 2022-11-05
1205

我自己在使用代码检测工具 sonarqube结合 jenkins的过程中属实踩了不少的坑,首先是不是很懂,其次是盲目的看着别人的博客就开始做,没有自己思考其中的实现原理和官网的说明。

写个博客:一是分享实现的方法和其中的坑。二是贴一些比较好的链接方便参考和学习。

环境准备:

jenkins


sonarqube server


sonarqube scanner

 

一个可以进行maven 构建部署的 simple-maven 流水线项目



从这两个工具就可以看到了,jenkins下载对应的插件的时候,我也就以为是 server这个软件,你下载下来的软件,通常也没有明显 server的后缀,

上面第一个。所以就这样瞎搞一通没有实现。后文指的server也就是启动第一个软件。


所谓流水线项目,是jenkins中创建项目的一种,在jenkins中,有自由项目,maven项目,流水线项目。建立项目直接选择流水线项目即可,只需要配置,代码仓库和对应的 Jenkinsfile 路径:


Jenkinsfile代码:

    // pipeline {
    // agent any
    // stages {
    // stage('Build') {
    // steps {
    // sh 'mvn -B -DskipTests clean package'
    // }
    // }
    // }
    // }
    node {
    stage('SCM') {
    checkout scm
    }
    stage('SonarQube Analysis') {
    def scannerHome = tool 'SonarScanner';
    withSonarQubeEnv() {
    sh "${scannerHome}/bin/sonar-scanner.bat"
    }
    }
    }

                                               文末链接中项目已经包含


    配置:

    下载好对应的软件:



    进入bin启动 server  运行之后,就可以访问 http://localhost:9000

    首次一般会更新密码。之后新建一个名字为 ss 的项目。这个名字在jenkinsfile中的配置要用(sonar.projectKey=ss)。之前别人说的所谓的添加 生成的secret token到配置里面,但我试了一直没用,一直报错说:需要login 和密码。最后实现的方法是不用添加,直接把账号和密码,填在项目中的 sonar-project.properties
    文件:名字为什么是这个,通常是默认名字,在官网有说明:




    完整的文件代码给出如下:

      sonar-project.properties


        sonar.projectKey=ss  # server中建立的项目名字
        sonar.login=admin # 账号
        sonar.password=whoelse105105 #密码
        sonar.exclusions=*.java
        sonar.java.binaries=D:/go-project/simple-java-maven-app/target/classes #不报错可以不加,我报错了需要加这个
        sonar.java.libraries=D:/go-project/simple-java-maven-app/target/classes #不报错可以不加,我报错了需要加这个
        # sonar.java.binaries = target / classes


         jenkins 的 Configuration  System中配置:


        system tool configuration配置 sonarqube scanner:


        地址是解压之后的地址,因为这个地址配置是在 jenkinsfile中使用的。

        使用配置是:

          stage('SonarQube Analysis') {
          def scannerHome = tool 'SonarScanner';
          withSonarQubeEnv() {
          sh "${scannerHome}/bin/sonar-scanner.bat"
          }
          }



          所以要匹配这个配置,一个是tool名字要相同:都是:SonarScanner

          另一个是调用的路径在本地的路径下确实可以找到,拼接来刚好是我本地的地址如下:


          所以这个配置不要盲目配上就可以了,要懂得调用的逻辑,之所以这样配,可能即时和maven 一样,通常不把 bin目录加到 jenkins的配置中的默认的规则而已。

          最后在jenkins中,点击构建触发流水线项目就可以了!



          运行结果:


          打包的tools获取:回复 sonarqube

          官网链接:

          sonarqube

          https://www.sonarqube.org/

          文章转载自specialApe logic,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论