2021-06-03 基于docker的jenkins+docker+sonarqube+C++

Jenkins+docker+sonarqube+C++环境搭建

  • 前言
    • docker下安装jenkins
      • 拉取镜像
      • 创建docker容器
    • docker下安装sonarqube
      • 安装postgresql镜像
      • 启动postgresql容器
      • 安装sonarqube镜像
      • 启动sonarqube容器
    • 配置sonarqube
      • 安装c++插件
    • Jenkins配置sonarqube环境
      • 安装sonarqube scanner插件

前言

记录一次搭建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,点击安装,安装完成后重启
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第1张图片

Configration > System > Restart Server
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第2张图片

安装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的代码规则界面,会显示以下内容
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第3张图片
需要激活本规则,激活步骤如下
点击质量配置 >创建 ,名称随便写,语言选择安装的插件,如下图
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第4张图片
创建好之后,将规则设置为默认
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第5张图片

然后,进行激活规则
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第6张图片
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第7张图片
因为我已经激活,所以上述状态显示挂起

生成token,使用jenkins调用sonarqube时需要。输入名称后,点击生成即可。注意保存此token
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第8张图片

Jenkins配置sonarqube环境

安装sonarqube scanner插件

进入到Jenkins的插件管理界面,安装scanner插件
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第9张图片
然后进入到系统配置界面,配置sonarqube服务器地址
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第10张图片
认证token即上述步骤生成的token,然后点击应用保存即可
然后到jenkins的全局工具配置界面,进行scanner的配置
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第11张图片
当前需要配置sonar-scanner的路径,自行下载后,在jenkins容器内进行安装,当然也可以勾选自动安装。我是自行下载的,自行下载地址如下,下载后

https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip

然后进行新建一个自由风格的任务,配置构建步骤
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第12张图片

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/** # 另外可以排除指定的文件夹不进行扫描

然后点击应用保存,进行构建
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第13张图片
从上图可以看出执行的命令就是我们在配置的命令选项
然后进入到sonarqube中进行查看代码审查结果,结果如下
2021-06-03 基于docker的jenkins+docker+sonarqube+C++_第14张图片
至此全部结束

参考链接:
https://www.jianshu.com/p/e83d5e002739
https://www.cnblogs.com/nhdlb/p/12576273.html

你可能感兴趣的:(docker,docker)