Jenkins+docker+sonarqube+C++环境搭建
前言
记录一次搭建Jenkins + docker + sonarqube的环境,代码提交后自动触发sonarqube检查c++代码
docker下安装jenkins
拉取镜像
docker pull jenkins/jenkins
创建docker容器
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins
至于配置docker在此不作赘述
docker下安装sonarqube
sonarqube需要依赖数据库,因此先安装数据库
安装postgresql镜像
docker pull postgres:12.3-alpine
启动postgresql容器
docker run --name postgresql -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -p 5432:5432 -v /data/postgresql/data:/var/lib/postgresql/data -d postgres:12.3-alpine
安装sonarqube镜像
docker pull sonarqube:8.4.0-community
启动sonarqube容器
docker run -d --name sonarqube \
--link postgresql \
-p 9000:9000 \
-e sonar.jdbc.url=jdbc:postgresql://postgresql:5432/sonar \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-v /data/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
-v /data/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
-v /data/sonarqube/sonarqube_data:/opt/sonarqube/data \
sonarqube:8.4.0-community
安装完成后使用登录:http://ip:9000
默认的帐号和密码为:admin/admin
配置sonarqube
登录sonarqube后,安装中文插件
Configration > Markplace, 搜索chinese pack,点击安装,安装完成后重启
Configration > System > Restart Server
安装c++插件
说明: sonarqube社区版是不支持c++代码审查的,企业版支持但是要收费。因此需安装牛人自己开发的C++代码审查插件,下载地址
https://github.com/SonarOpenCommunity/sonar-cxx
本人下载的为sonar-cxx-plugin-1.3.2.1853.jar版本的
下载后,放入到/opt/sonarqube/extensions/plugins
,因为创建容器中时进行了卷映射,因此可以直接放在docker宿主机下的/data/sonarqube/sonarqube_extensions/plugins
,然后重启sonarqube
重启完成后,在sonarqube的代码规则界面,会显示以下内容
需要激活本规则,激活步骤如下
点击质量配置 >创建 ,名称随便写,语言选择安装的插件,如下图
创建好之后,将规则设置为默认
然后,进行激活规则
因为我已经激活,所以上述状态显示挂起
生成token,使用jenkins调用sonarqube时需要。输入名称后,点击生成即可。注意保存此token
Jenkins配置sonarqube环境
安装sonarqube scanner插件
进入到Jenkins的插件管理界面,安装scanner插件
然后进入到系统配置界面,配置sonarqube服务器地址
认证token即上述步骤生成的token,然后点击应用保存即可
然后到jenkins的全局工具配置界面,进行scanner的配置
当前需要配置sonar-scanner的路径,自行下载后,在jenkins容器内进行安装,当然也可以勾选自动安装。我是自行下载的,自行下载地址如下,下载后
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
然后进行新建一个自由风格的任务,配置构建步骤
sonar.projectKey=$JOB_NAME # project key
sonar.projectName=$JOB_NAME # 项目名称,会在sonarqube界面上显示
sonar.projectVersion=1.0 # 版本,也可以用构建次数代替,使用 $BUILD_NUMBER
sonar.sourceEncoding=UTF-8 # 编码格式
sonar.sources=./src # 保存源码的路径(相较于$WORKSPACE的路径)
sonar.language=c++ # 一个工程中可能会用到多种语言,例如js css python等,默认情况下都会扫描。这样进行配置代表只扫描c++的代码
sonar.exclusions=**/build/** # 另外可以排除指定的文件夹不进行扫描
然后点击应用保存,进行构建
从上图可以看出执行的命令就是我们在配置的命令选项
然后进入到sonarqube中进行查看代码审查结果,结果如下
至此全部结束
参考链接:
https://www.jianshu.com/p/e83d5e002739
https://www.cnblogs.com/nhdlb/p/12576273.html