我们身处现代世界,我们的生活想要有更好的品质,并在更容易的介绍中提供复杂的解决方案。我会说 SonarQube 是有助于提高项目质量并在项目增长时防止未来出现不可预测问题的引擎之一。
不幸的是,很难找到真正的指南如何设置 SonarQube 并将其与 Jenkins 集成。2021 年的几乎所有指南都已过时,这也是创建此主题的原因之一。
我将解释如何轻松地将 CI/CD 工具 Jenkins 与 SonarQube 集成以评估您的资源。
概述
Jenkins是一个免费的开源自动化服务器。它有助于自动化与构建、测试和部署相关的软件开发部分,促进持续集成和持续交付。它是一个基于服务器的系统,在 Apache Tomcat 等 servlet 容器中运行。它支持版本控制工具,包括 AccuRev、CVS、Subversion、Git、Mercurial、Perforce、ClearCase 和 RTC,并且可以执行基于 Apache Ant、Apache Maven 和 sbt 的项目以及任意 shell 脚本和 Windows 批处理命令。
SonarQube ® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查。
SonarQube 配置
生成令牌
SonarQube UI 界面可以使用User > My Account > Security中的设置生成新令牌
页面底部的表单允许您生成新令牌。单击生成按钮后,您将看到生成的令牌值。很快复制它;一旦您关闭通知,您将无法查看和更改它。
jenkins配置
首先需要安装SonarQube Scanner插件SonarQube Scanner | Jenkins plugin
安装插件的最简单方法是通过 UI管理 Jenkins >管理插件视图,Jenkins 环境的管理员可以使用该视图。
当安装SonarQube Scanner插件时,需要添加带有生成令牌的 Sonar 凭据。从 Jenkins 页面单击管理 Jenkins > 管理凭据
管理 Jenkins > 配置系统 > SonarQube 服务器
您应该添加 SonarQube 服务器 URL 并选择令牌名称
管理 Jenkins > 全局工具配置
sonar扫描的安装
jenkins管道示例
这是 Jenkins maven 管道的示例,它能够构建代码、分析并与 SonarQube 质量门进行比较。
如果代码没有通过质量门,构建将失败。
<span style="background-color:#f2f2f2"><span style="color:rgba(0, 0, 0, 0.8)"><span style="color:#292929"><em>#!groovy
</em>管道 {
代理<strong>任何
</strong>环境 {
GIT_COMMIT_SHORT = sh(
script: "printf \$(git rev-parse --short ${GIT_COMMIT})",
returnStdout: <strong>true
</strong> )
}
工具 {
maven 'maven'
jdk 'java'
}
阶段{
阶段('构建项目'){
步骤{
sh'''mvn安装'''
}
}
阶段('SonarQube分析'){
环境{
SCANNER_HOME =工具'Sonar-scanner'
}
步骤{
withSonarQubeEnv(credentialsId:'声纳-credentialsId',安装名称:'声纳') {
sh '''$SCANNER_HOME/bin/sonar-scanner \
-Dsonar.projectKey=projectKey \
-Dsonar.projectName=projectName \
-Dsonar.sources=src/ \
-Dsonar.java.binaries=target/classes/ \
-Dsonar. excludes =src/test/java/****/*.java \
-Dsonar.java.libraries=/var/lib/jenkins/.m2/**/*.jar \
-Dsonar.projectVersion=${BUILD_NUMBER} -${GIT_COMMIT_SHORT}'''
}
}
}
stage('SQuality Gate') {
steps {
timeout(time: 1, unit: 'MINUTES') {
waitForQualityGate abortPipeline: <strong>true
</strong> }
}
}
}
}</span></span></span>
结果:
结果,您将看到带有分析结果的 SonarQube 仪表板
正如您在现有主题中所见,SonarQube 易于设置和配置。示例展示了如何将其与现有的 CI/CD 流程集成。从初始构建开始 SonarQube 评估您的应用程序。它定义了差距、错误并展示了几种编程语言(java、.Net、js 等)编码的最佳实践。
SonarQube 有助于使您的项目更安全,防止易受攻击并使您的代码质量更高。