Jenkins Pipeline + Sonar + Git实现代码检测


近期需要对公司内的代码开启Sonar检测,原来的项目都是采用Jenkins Pipeline进行打包构建的,因此现在增加代码检测的开发也会基于Pipeline来展开。以下部分的操作都是基于Sonar安装完成来展开的。

Sonar配置

Sonar上需要做两个配置:

  • 生成Token,用于Jenkins和Sonar之间检测通信使用;
  • 配置Jenkins的回调地址,在Sonar检测之后将结果回调给Jenkins,以便于进行后续操作。

生成Token

登录管理员账号,点击“我的账号”,在“通用令牌”处进行令牌的配置。
Token生成

备注:生成后的token要保存好,后续环节要使用,丢失后只能删除重新配置。

配置回调地址

点击“配置”,然后点击“配置-网络调用”,如下图

回调地址配置入口

输入回调地址,如下:
回调地址配置

URL部分格式:http://${JENKINS_URL}/sonarqube-webhook,其中/sonarqube-webhook是固定的。

Jenkins配置

安装

以管理员角色登录Jenkins,点击“Manage Jenkins”:
Manage Jenkins
找到“Manage Plugins”:
Manage Plugins
搜索“SonarQube”,并选择安装即可完成。

配置

添加凭据

凭据部分需要配置Sonar的Token,首先进入凭据管理页面:
管理凭据
点击新增凭据,将前面生成的Sonar token复制过来即可:
新增凭据

Jenkins配置

进入Jenkins配置页面,如下:
Jenkins配置界面
然后进行Sonar Server的配置(此处Name要记住,后面Pipeline会使用):
Sonar Server配置
进入Global Tool Configuration,配置Sonar Scanner,如下:
Sonar Scanner配置

Pipeline编写

stage("Sonar Analysis") {
    // 此处可以控制某些条件才开启
    when {
        allOf {
            expression { a == b }
        }
    }
    steps {
        script {
            // tool里面的参数和上面配置Sonar Scanner的name保持一致
            scannerHome = tool 'sonarqube-scanner'
        }

        // 此处withSonarQubeEnv里面的SonarQube和上面配置的Sonar Server的Name保持一致
        withSonarQubeEnv('SonarQube') {
            sh "$scannerHome/bin/sonar-scanner " +
                    "-Dsonar.projectKey=${params.SERVICE_NAME} " +
                    "-Dsonar.projectName=${params.SERVICE_NAME} " +
                    "-Dsonar.sourceEncoding=UTF-8 " +
                    "-Dsonar.language=java " +
                    "-Dsonar.projectVersion=1.0 " +
                    "-Dsonar.java.binaries=. " +
                    "-Dsonar.sources=."
        }

        // 这个睡眠时为了防止没有分析完成就去请求结果
        timeout(time: 5, unit: 'MINUTES') {
            script {
                def qg = waitForQualityGate()
                if (qg.status != 'OK') {
                    error "Pipeline aborted due to a quality gate failure: ${qg.status}"
                }
            }
        }
    }
}

通过以上配置后就完成了,大功告成!


文章作者: zzq0324
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zzq0324 !
  目录