Jenkins Pipeline+sonar构建质量平台
前提:
Jenkins
JDK
目录:
1、安装sonar插件:SonarQube Scanner for Jenkins
2、安装SonarQube
3、安装sonar-scanner
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.安装sonar插件:SonarQube Scanner for Jenkins
2、安装SonarQube
2.1 下载
下载地址:https://www.sonarqube.org/downloads/
2.2 解压
下载后放在/usr/local目录下,并解压
unzip sonarqube-6.7.6.zip
2.3 配置环境变量
vi /etc/profile
里面写如下
#set sonarqube export SONAR_HOME=/usr/local/sonarqube-6.7.6 PATH=$PATH:$SONAR_HOME/bin
使配置生效
source /etc/profile
2.4 启动并测试
进入到启动目录
/usr/local/sonarqube-6.7.6/bin/linux-x86-64
执行启动命令
./sonar.sh start
启动时要查看es.log和sonar.log日志
tail -f /usr/local/sonarqube-6.7.6/logs/es.log
tail -f /usr/local/sonarqube-6.7.6/logs/sonar.log
用root启动会报错,请参考我的另一篇文章:https://www.cnblogs.com/gcgc/p/10239590.html
所有问题解决完后启动,并测试,访问ip+port,OK了
我这里是因为默认的9000端口被占用了,所以修改了默认端口 vi /usr/local/sonarqube-6.7.6/conf/sonar.properties
3、安装sonar-scanner
3.1 下载
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
3.2 解压
下载后放在/usr/local目录下,并解压
unzip sonar-scanner-cli-3.2.0.1227-linux.zip
3.3 配置环境变量
和上面一样修改/etc/profile文件
#set sonarqube export SONAR_HOME=/usr/local/sonarqube-6.7.6 export SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.2.0.1227-linux PATH=$PATH:$SONAR_HOME/bin:$SONAR_SCANNER_HOME/bin
3.4 测试
进入/usr/local/sonar-scanner-3.2.0.1227-linux/bin执行:
./sonar-scanner -h
如果出现如下就说明安装好了
[root@iZbp1bb2egi7w0ueys548qZ bin]# ./sonar-scanner -h INFO: INFO: usage: sonar-scanner [options] INFO: INFO: Options: INFO: -D,--define <arg> Define property INFO: -h,--help Display help information INFO: -v,--version Display version information INFO: -X,--debug Produce execution debug output
4、在Jenkins中配置sonar
SonarScanner和SonarQube的关系类似于客户端与服务端,由于SonarScanner工具需要把扫描的代码及结果发送到SonarQube服务器上,所以需要配置SonarQube服务地址。
在Jenkins系统配置>>系统设置中配置如下:
5、在Jenkins中配置sonar-scanner
在全局工具配置中配置如下:
6、在项目根目录下新建sonar-project.properties文件
内容如下
# must be unique in a given SonarQube instance sonar.projectKey=cynomys:0.0.1 # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. sonar.projectName=cynomys sonar.projectVersion=0.0.1 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # This property is optional if sonar.modules is set. sonar.sources=. sonar.exclusions=**/test/**,**/target/** sonar.java.source=1.8 sonar.java.target=1.8 # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8
# 最新版本的sonarQube6.5只能扫描class文件,需要指定classes文件路径 sonar.java.binaries=/root/.jenkins/workspace/e-content/e-content-controller/target/classes
7、编写pipeline脚本
node { maven_home='/usr/local/apache-maven-3.5.4' stage('Pull Code'){ git branch: 'master', credentialsId: 'gitlab_account', url: 'http://*****.git' } stage('Code Check') { echo "代码检查!" } stage('SonarQube analysis') { // SonarQubeServer为系统配置的SonarQube servers的名称 withSonarQubeEnv('SonarQubeServer') { sh '/usr/local/sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner' } } stage('Unit Test') { echo "单元测试 !" } stage('Compile') { echo '编译开始' // 暂时打包报错 sh "'$maven_home'/bin/mvn install" } stage('Build Images') { echo '敬请期待!' } stage('Backup'){ echo '旧版本软件包已经备份' } stage('Delete Old war'){ echo "删除老的包" } stage('Deploy'){ echo '部署!' sh 'echo hello' // sh 'scp /root/.jenkins/workspace/e-trade/e-trade-mapper/target/e-trade-mapper-1.0-SNAPSHOT.jar root@10.132.131.51:/home/guchen_test' } stage('Integration Testing') { echo "敬请期待!" } stage('UI Automated Testing') { echo "敬请期待!" } stage('Send Testing Report') { echo "敬请期待!" } }
8、构建一下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!