如何在Jenkins Pipeline中接入SonarQube进行代码扫描
随着软件开发项目的不断增多,代码质量的管理变得愈发重要。SonarQube是一个开源的代码质量管理平台,它可以帮助开发团队发现和修复代码中的各种问题,从而提高代码的质量。而Jenkins是一个广泛使用的持续集成和持续交付工具,它可以自动化构建、测试和部署应用程序。本文将介绍如何在Jenkins Pipeline中接入SonarQube,以便在每次构建时自动扫描代码并生成代码质量报告。
步骤一:安装SonarQube
首先,您需要在您的服务器上安装SonarQube。您可以从SonarQube官方网站下载适用于您操作系统的安装包,并按照官方文档进行安装和配置。确保SonarQube服务器正在运行,并且可以通过Web浏览器访问。
步骤二:配置SonarQube服务器
在Jenkins中使用SonarQube插件之前,您需要配置SonarQube服务器的相关信息。在Jenkins中,转到“系统管理”>“全局工具配置”并找到“SonarQube服务器”部分。在这里,添加您SonarQube服务器的名称和URL。
步骤三:创建Jenkins Pipeline
现在,让我们创建一个Jenkins Pipeline来执行代码扫描。在您的项目中,创建一个名为“Jenkinsfile”的文件,并添加以下内容:
#!groovy def serverDir,projectName,version pipeline { agent any environment { gitRepositoryUrl = "http://git.xxx.work/web/xxx-systemAdmin.git" credentialsId = "0f305fa1-acba-4c0a-9bdf-xxxxxxx" PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin" // SonarQube SONAR_PROJECT_PART_URL = "/dashboard?id=" SONAR_PROJECT_EXCLUSIONS = "" } options { buildDiscarder(logRotator(numToKeepStr: '5')) } tools { nodejs 'node12.22' // nodejs 'nodejs' } stages { stage('pull code') { steps { sh "rm -rf ./* .git*" script{ def changeLogSets = checkout([$class: 'GitSCM', branches: [[name: "$GIT_BRANCHES"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${credentialsId}", url: "${gitRepositoryUrl}"]]]) version = changeLogSets['GIT_COMMIT'] } } } stage('SonarQube Analysis') { steps { echo "开始执行 SonarQube 检测 ......" script { scannerHome = tool 'SonarQubeScanner' projectVersion = "1.0.0" } withSonarQubeEnv('SonarQube') { sh """ ${scannerHome}sonar-scanner \ -Dsonar.projectKey=${env.JOB_NAME} \ -Dsonar.projectName=${env.JOB_NAME} \ -Dsonar.sourceEncoding=UTF-8 \ -Dsonar.projectVersion=${projectVersion} \ -Dsonar.sources=src/ \ -Dsonar.exclusions=${env.SONAR_PROJECT_EXCLUSIONS} """ } // 睡眠防止没有分析完成就去请求结果 sleep(120) timeout(time: 3, unit: 'MINUTES') { script { def qualityGateResponse = waitForQualityGate() if (qualityGateResponse.status != 'OK') { error "SonarQube 检测不通过: ${qualityGateResponse.status} , 请前往 ${SONAR_HOST_URL}${env.SONAR_PROJECT_PART_URL}${env.JOB_NAME} 查看检测报告" } else { echo "SonarQube 检测通过, 请前往 ${SONAR_HOST_URL}${env.SONAR_PROJECT_PART_URL}${env.JOB_NAME} 查看检测报告" } } } } } stage('npm build') { steps { sh ''' echo $PATH npm -v npm config set registry https://registry.npmmirror.com npm config get registry npm install --unsafe-perm=true --allow-root npm run build #rm -rf /mnt/dev-nginx-data/html/dev-zt/* #cp -ra dist/* /mnt/dev-nginx-data/html/dev-zt/ ''' } } } }
在上述代码中,您需要替换Your_Project_Name为您的项目名称,SonarQube_Server_Name为您在步骤二中配置的SonarQube服务器的名称。这个Pipeline包括了三个阶段:检出代码、构建应用程序以及执行SonarQube代码扫描。
步骤四:配置Jenkins任务
在Jenkins中,创建一个新的Pipeline任务,将其与您的代码库关联,并选择刚刚创建的Jenkinsfile。
步骤五:运行Pipeline
现在,当您运行Jenkins任务时,Pipeline将自动执行代码扫描并将结果发送到SonarQube服务器。您可以在SonarQube的Web界面上查看代码质量报告,包括代码的各种度量指标、问题和建议的改进。
通过将SonarQube集成到Jenkins Pipeline中,您可以实现持续的代码质量监控,及时发现并解决问题,从而提高您的应用程序的质量和可维护性。
希望这篇博客帮助您成功地将SonarQube集成到Jenkins Pipeline中,改进您的软件开发流程。如果您有任何问题或疑问,欢迎在评论中提出。
--有些人来了去了,有些人近了远了,岁月不堪数,故人不如初,不过是在人间暂坐,却要历经万千沧桑。--