sonarqube安装以及jenkins集成sonarqube

一、sonarqube安装

docker方式安装sonarqube

docker 方式安装是最简便的,我选择了这个安装方式
1、下载镜像

docker pull postgres:latest
docker pull sonarqube

2、 创建挂载目录

#用于postgres的挂载目录
mkdir -p /opt/postgres/postgresql
mkdir -p /opt/postgres/data

mkdir -p /opt/sonarqube/logs
mkdir -p /opt/sonarqube/conf
mkdir -p /opt/sonarqube/data
mkdir -p /opt/sonarqube/extensions

3、运行容器

docker run --name postgres -d -p 5432:5432 --net sonarqube \
-v /opt/postgres/postgresql:/var/lib/postgresql \
-v /opt/postgres/data:/var/lib/postgresql/data \
-v /etc/localtime:/etc/localtime:ro \
-e POSTGRES_USER=sonar \
-e POSTGRES_PASSWORD=sonar \
-e POSTGRES_DB=sonar \
-e TZ=Asia/Shanghai \
--restart always \
--privileged=true \
--network-alias postgres \
postgres:latest
docker run -d --name sonarqube -p 9090:9000 \
 -e ALLOW_EMPTY_PASSWORD=yes \
 -e SONARQUBE_DATABASE_USER=sonar \
 -e SONARQUBE_DATABASE_NAME=sonar \
 -e SONARQUBE_DATABASE_PASSWORD=sonar \
 -e SONARQUBE_JDBC_URL="jdbc:postgresql://postgres:5432/sonar" \
 --net sonarqube \
 --privileged=true \
 --restart always \
 -v /opt/sonarqube/logs:/opt/sonarqube/logs \
 -v /opt/sonarqube/conf:/opt/sonarqube/conf \
 -v /opt/sonarqube/data:/opt/sonarqube/data \
 -v /opt/sonarqube/extensions:/opt/sonarqube/extensions\
 sonarqube

4、通过ip 端口访问:http://ip:9090

二、jenkins集成sonarqube

1、jenkins下载插件:
进入插件管理,搜索sonar,选择SonarQube Scanner for Jenkins安装,安装好后重启jenkins服务。
在这里插入图片描述
2、sonarqube创建访问令牌
sonarqube中生成用户的访问令牌,代替用户名和密码,避免密码在网络中传输。
在这里插入图片描述
在这里插入图片描述
点击生成后会出现一个token,要复制下来,只会显示一次。
3、jenkins系统设置
在这里插入图片描述
在这里插入图片描述
点击添加,选择下拉框中的Jenkins,进入到jenkins的凭证创建
在这里插入图片描述
4、全局工具配置
在这里插入图片描述
该工具就是用来扫描代码的。
5、sonarqube中创建项目
在这里插入图片描述

在这里插入图片描述
项目标识就写解决方案名称。
在这里插入图片描述
还写解决方案名称,点击创建。
在这里插入图片描述
到此,项目创建成功,再点击继续是告诉你不同语言的执行命令,不用管,直接退出该界面就可以。

6、sonarqube权限的设置。
在这里插入图片描述
在这里插入图片描述
7、 sonarqube给用户分配执行分析等权限。
在这里插入图片描述
在这里插入图片描述

8、jenkins中创建项目
jenkins中创建一个项目,配置好git。
配置sonar-project.properties文件
内容如下:

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://192.214.3.22:9090
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.sources=.
sonar.exclusions=**/src/**,**/Views/**,**/wwwroot/**,/**static/**,/**build/**
sonar.projectKey=MOM.SCHEDULE
dotnet sonarscanner begin /k:"testproject" /n:"testproject" /v:1.1
dotnet build
dotnet sonarscanner end 

sonar.host.url:是sonarqube的访问地址
sonar.sourceEncoding:使用的编码格式
sonar.sources:需要扫描的代码源目录,写.就是当前项目的根目录
sonar.exclusions:指定不要扫描的文件夹,多个用逗号隔开
sonar.projectKey:项目key ,就是sonarqube创建项目的名称
dotnet sonarscanner begin /k:“testproject” /n:“testproject” /v:1.1
/k 和/n 后面都是sonarqube创建项目的名称; /v 是版本号,随意写

dotnet build:编译项目
将sonar-project.properties文件放到解决方案的根目录下
在这里插入图片描述

在jienkins中构建环境,勾选上图项,token就是之前添加的凭证。
在这里插入图片描述
在构建中,添加execute sonarqube scanner ,因为已经添加了sonar-project.properties文件,所以在这里只要选择jdk就可以,分析项目不用写。

然后点击构建,结果如下:
在这里插入图片描述
onar-project.properties文件也可以不用写,直接把sonar-project.properties里面的内容放到构建中的execute sonarqube scanner里面的分析项目里边,同样可以执行成功。

三、解决不能扫描cs文件问题

用以上方式的sonarqube扫描 c#项目 会略过.cs文件,无法扫描出c#的问题
在这里插入图片描述
sonar7 以后版本,默认的 sonar-scanner 加 sonar-project.properties 配置文件,扫描c#的项目会出现,扫描不报错,但是显示结果为空.

jenkins 在linux 环境中要想扫描 c#项目必须使用 dotnet-sonarscanner 扫描

解决过程

1、首先我的jenkins是已经安装了dotnet sdk的。
2、安装 dotnet scanner #
进入jenkins容器:

执行 dotnet tool install --global dotnet-sonarscanner
就成功安装好 Sonar Scanner 了。

  添加环境变量:
  vim  /etc/profile

在这里插入图片描述
添加以上环境变量,重启容器。
3、分析代码
第一步:sonarqube中创建项目
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将这个访问token 保存下来。
第二步:在jenkins中创建项目
在这里插入图片描述
配置拉取源码地址
在这里插入图片描述
配置构建中的执行shell, 把分析的命令写上。

--------开始扫描,
/k 后面是项目名称,跟sonarqube中的项目名,
host.url 是sonarqube的访问地址
login 是在建项目的时候产生的访问token。
dotnet build ****.API.csproj
要编译的csproj文件的具体路径。
该项目有多个文件夹,可以写多个一起分析。
dotnet-sonarscanner end /d:sonar.login=“0c1a9ad983f40b6c2942290dab86917b7b924c8c”
这个就是分析结束,并上传报告。

构建成功后,在看sonarqube中的结果。
在这里插入图片描述
已经扫描了C#的文件

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javascript_good

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值