在 k8s 中的 jenkins 集成 sonarqube 实现代码质量检查


不乱于心,不困于情,不畏将来,不念过往,如此安好 ——《不宠无惊过一生》丰子恺

概述

关于在 k8s 中安装 jenkins 和 sornarqube 可以查看下面的文章:

在 k8s 中安装 jenkins

使用 helm 在 k8s 中安装 sonarqube

本文主要记录一下如何在 k8s 中的 jenkins 集成 sonarqube 实现代码质量检查,本文内容主要参考下面的官方文档。

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/

jenkins 集成 sonarqube

1. 在 jenkins 中安装 sonarqube 插件

【系统管理】-> 【插件管理】-> 【可选插件】搜索 sonarqube ,选择插件 【
SonarQube Scanner for Jenkins】

2. 配置 sonarqube server

【系统管理】-> 【系统配置】-> 【SonarQube servers】

点击 Add SonarQube 需要配置一些几个参数:

  • Namesonarqube server 的名字,在 jenkinsfile 中的 withSonarQubeEnv('name') 可以使用这里配置的名字
  • Server URL:连接 sonarqube 服务器的地址,由于这里将 jenkins 和 sonarqube 都部署在k8s的同一个命名空间中,所以可以使用 serviceName 直接通信。但是存在一个问题,这配置的serviceName只能在k8s集群内部访问,如果需要从jenkins页面跳转到sonarqube的控制台,那么这里需要配置一个sonarqube的外网地址。
  • Server authentication token:这个token需要在sonarqube的控制台上面获取,如下图所示:

选择我的账号,如下图所示:

生成令牌,如下图所示:

在 jenkins 中添加凭据,如下图所示:

3. 在 jenkinsfile 中配置 sonarqube

sonarqubejenkinsfile 提供了一个 withSonarQubeEnv 块,它允许我们直接与 sonarqube 服务器交互。我们可以在withSonarQubeEnv(name) 中填写前面 jenkins 中配置的 sonarqube server 的名字,它将会使用在 jenkins 中配置的 sonarqube 的连接地址和认证信息。使用示例如下:

stage('SonarQube analysis') {
    // 这里是判断环境变量 CHECK 为 true 的时候才执行后面的步骤
    when {
        environment name: 'CHECK', value: 'true'
    }
    steps{
        // 这里的 sonarqube 就是我们前面配置的名称
        withSonarQubeEnv('sonarqube') { // Will pick the global server connection you have configured       
            // 这里使用名字叫做maven的容器运行
            container("maven") {
                sh 'mvn sonar:sonar'
            }
        }
    }
}

参考文档:

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/

相关