![8c349ab00df47ac66bbaa9293961311b.png](https://i-blog.csdnimg.cn/blog_migrate/6d7d0cf68379a3444611f9d813a5692e.jpeg)
最近工作中已经很少会使用jenkins来构建编译任务了,因为已经将大部分项目迁移到gitlab上了,但是不可否认的是 jenkins依然是持续集成工具的最佳选择.
各种工具其实都各有优缺点,在选用时都需要考虑到学习成本以及使用场景。本文就介绍下jenkins的一种使用场景: 推送sonarqube报告
首先,我们需要知道sonarqube能分析项目代码,帮助发现项目中潜在的bug,承担的是一个质量管理的角色.其次,上传报告一般是需要借助于sonar-scanner插件来上传的,但是也有例外,例如java项目可以直接通过maven的soanr插件来上传代码.
使用sonarqube的好处就不说了,本文就讲讲从jenkins推送报告到soanrqube的几种方式
在之前的文章中说过:jenkins一般是作为master节点,往往担任的是分发者的角色,将一些构建任务分发到其他的slave节点中,这种方式符合现在的主流,即master-slave方式. 当然,我们也能在master上运行任务.
一、在jenkins master节点上运行构建任务
这种方式我们可以选择在jenkins上安装Sonarqube Scanner插件,也可以选择在安装jenkins的机器上装sonar-scanner插件,这两者效果一样,本质上都是通过sonar-scanner插件来上传报告.
如果是在jenkins上安装Sonarqube Scanner插件,还需要进行配置,比较麻烦,建议直接在机器上安装sonar-scanner插件,十分简单,具体用法可看下面的文档
二、在jenkins node节点上运行构建任务
这种方式是jenkins master节点将实际的任务分发给node节点,当然需要事先准备好node节点,然后再配置job的时候指定使用该node节点. 还需要在node节点对应的服务器上下载soanr-scanner插件,用法可看下面的文档
鉴于采用sonar-scanner来上传sonar报告是最普遍的做法,因此,下面我们介绍下具体的使用实例
上传sonar报告的例子
1.java项目上传sonar 报告其实有两种,一种如下:
mvn clean package sonar:sonar -Dsonar.host.url=xxxx
注意sonar:sonar是会下载一个sonar插件,然后通过该sonar插件去上传报告到sonarqube上.
另外一种是通过sonar-scanner插件推送
sonar-scanner -Dsonar.host.url=xxxx
-Dsonar.projectKey=Test
-Dsonar.projectName=Test
-Dsonar.projectVersion=1.0
-Dsonar.sources=src
-Dsonar.java.binaries=target/classes
看到这里,很容易发现sonar-scanner命令的用法和java一样.这是直接通过命令来运行的. 事实上,sonar-scanner在运行时会读取当前目录下的sonar-project.properties文件,所以也可以将这些参数放入该文件中,放入文件中时就不需要再加-D了
2.c++项目上传sonar报告
直接贴命令:
sonar-scanner
-Dsonar.projectKey=CProject
-Dsonar.projectName=CProject
-Dsonar.projectVersion=1.0
-Dsonar.sources=src
-Dsonar.language=c++
这里就只介绍java项目和c++项目了,具体的用法,大家可以参考官方用法,也比较全面,需要注意的是:使用sonar-scanner时要注意使用的是sonar-scanner自带的java版本还是系统的java版本,需要将sonarqube的网站证书加入到java的cacerts文件中
本文粗略的介绍了如何使用sonar-scanner上传报告,以及jenkins和sonarqube集成的基本原理。事实上,在真正开始集成它们时,会遇到各种各样的问题,对于新手来说尤其麻烦.本文也只是提出了一个问题以及对应的解决方案.
介于文章篇幅,因此大家如果在集成过程中遇到问题的话,可一起探讨下解决办法.
微信公众号: DevOps入门指南
大家关注下微信公众号!另外,新建了一个微信群,主要是devops/ci/cd相关的话题讨论以及问题解决方案。大家感兴趣的话可以加微信:crazy_boy-smile