Jenkins2使用Pipeline和Sonarqube集成

安装Sonarqube6.4

安装Jenkins的插件

  • pipeline
  • blue ocean
  • SonarQube Scanner

SonarQube Scanner说明文档如下

image.png

其实这个说明已经非常清楚了

  • Sonarqube服务器必须是6.2以上的,满足要求。
  • 通过管理员权限Sonarqube配置webhook


    image.png
  • Jenkins配置Sonarqube服务器,进入系统配置


    image.png

    PS: sonarqube的server URL后面一定不能有反斜杠。

  • Jenkins服务器的Maven配置,setting文件增加以下代码
<profile>                                                                                    
                        <id>sonar</id>                                                               
                        <activation>                                                                 
                                <activeByDefault>true</activeByDefault>                              
                        </activation>                                                                
                        <properties>       
<sonar.host.url>http://${sonarqubeUrl}</sonar.host.url>           
                        </properties>                                                                
                </profile>                                                                           
        <profile>

${sonarqubeUrl} 替换自己的服务器地址。

pipeline说明

 stage("build & SonarQube analysis") {
          node {
              withSonarQubeEnv('My SonarQube Server') {
                 sh 'mvn clean package sonar:sonar'
              }
          }
      }

      stage("Quality Gate"){
          timeout(time: 1, unit: 'HOURS') {
              def qg = waitForQualityGate()
              if (qg.status != 'OK') {
                  error "Pipeline aborted due to quality gate failure: ${qg.status}"
              }
          }
      }

build & SonarQube analysis 分析项目
Quality Gate 监听Webhook返回的结果,所以必须保证sonarqube中已经正确配置,否则会一直监听,所以增加了timeout的超时配置。防止卡死,但是没有必要配置1个小时,如果正常应该秒级可以返回。这样才能真正的控制流程,不然sonarqube失败也继续构建就不合理了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容