sonarqube安装以及jenkins集成sonarqube

news2024/11/25 1:03:59

一、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#的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

慧博云通加入飞桨技术伙伴计划,共同推动企业AI应用创新

近日,慧博云通子公司慧博云通(上海)软件技术有限公司正式加入飞桨技术伙伴计划,双方将共同探索人工智能多场景创新应用,为企业提供智能化解决方案。 慧博云通 慧博云通科技股份有限公司(股票代码&#x…

Pytorch分布式训练(一)

参考文献: 33、完整讲解PyTorch多GPU分布式训练代码编写_哔哩哔哩_bilibili pytorch进程间通信 - 文举的博客 (liwenju0.com) 前言 2023年,训练模型时,使用DDP(DistributedDataParallel)已经成为Pytorch炼丹师的标准…

sourcetree打开就闪退

1、问题分析 一直未出现如题描述情况,今早到公司可能是异常重启或者系统更新的愿意导致没有正常关机,出现了此种情况 2、问题解决 注:本文sourcetree安装在win11系统,win10等系统目录大同小异 ① (若快捷方式在桌面步骤①省略…

你的服务器还安全吗?用户数据是否面临泄露风险?

一系列严重的网络安全事件引起了广泛关注,多家知名公司的服务器遭到黑客挟持,用户的个人数据和敏感信息面临泄露的风险。这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性,提醒着企业和个人加强对网络安全的重视。 一、入侵案例1.1 蔚来数据…

复习Javascript第二章

JavaScript 函数 JavaScript 函数是被设计为执行特定任务的代码块。 JavaScript 函数会在某代码调用它时被执行。 function myFunction(p1, p2) {return p1 * p2; // 该函数返回 p1 和 p2 的乘积 } JavaScript 函数语法 JavaScript 函数通过 function 关键词…

爆款视频生成器小程序源码搭建方案

爆款视频生成器是一种可以帮助用户快速制作出高质量视频的工具。它可以根据用户提供的素材、模板和音乐等要素,自动生成一个精美的视频。这种工具可以大大节省用户的时间和精力,同时还能够提高视频制作的效率和质量,使视频更易于被观众接受和…

开发一个商城小程序有哪些功能?

✔️近年来,随着微信小程序的不断优化和推出,越来越多的商家开始选择使用小程序作为销售渠道。商城小程序作为一种便捷、快速、高效的销售渠道,已经成为商家们打造线上商城的重要手段。商城小程序拥有着丰富的功能,可以满足不同商…

使用itextpdf填充表单域并生成pdf

文章目录 前言一、准备工作1.1 安装软件1.2 准备pdf1.3 设置表单域 二、创建项目三、编写代码3.1 编写工具类3.2 测试 四、测试结果 前言 最近手上有个任务,就是需要做一个pdf导出的功能。 可选择的技术点比较多,我这边综合考虑之后,使用的…

品牌推广的新路径:邀请歌手出席活动的独特策略“

在当今的市场竞争中,品牌推广和市场营销已经成为企业取得成功的重要因素之一。而邀请知名歌手出席活动则是一种备受瞩目的策略,可以为品牌带来巨大的优势和机遇。无论是与赵丽颖、迪丽热巴、张子枫、关晓彤、周冬雨还是孙俪等知名歌手合作,都…

WPF中Binding的数据转换—ValueConverters

WPF中Binding的数据转换—ValueConverters 在WPF中使用Binding经常会遇到需要转换的情况,如bool转为visibility,通常情况需要自己写一个类继承自IValueConverter接口,使用详情请参见Binding对数据的转换和校验,这种方法虽然不难&…

C 模拟包装机

一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品&#x…

中间件漏洞解析

服务器解析漏洞算是历史比较悠久了,但如今依然广泛存在。在此记录汇总一些常见服务器(WEB server)的解析漏洞,比如IIS6.0、IIS7.5、apache、nginx等 2|0 二、IIS5.x-6.x解析漏洞(针对asa/asp/cer) 2|11、打…

学习笔记|盘点一些Linux 常用的命令

目录 1、apt-get Debian/Ubuntu系统包管理器 2、uname 获取 操作系统信息 3、date 查看/设置 系统时间 4、yum CentOS系统包管理器 5、mkdir 新建 文件夹 6、free 查看内存使用信息 7、wget 下载工具 8、cd 进入 文件夹 8、cp 复制或重命名 文件/文件夹 9、VI、VIM …

机器学习之支持向量机(SVM)

1 支持向量机介绍 支持向量机(support vector machine,SVM)是有监督学习中最有影响力的机器学习算法之一,该算法的诞生可追溯至上世纪 60 年代, 前苏联学者 Vapnik 在解决模式识别问题时提出这种算法模型,…

synchronized监视器锁

1、synchronized&监视器锁 1.1 synchronized 介绍 在 Java 中,synchronized 是一种关键字,用于实现线程的同步和互斥控制。它可以修饰方法或代码块,用于保护共享资源的访问,避免多个线程同时修改数据而引发的并发问题。 具…

chatgpt赋能python:Python重写父类__init__方法的必要性与实现方法

Python重写父类__init__方法的必要性与实现方法 在Python中,一个类可以继承自另一个类,从而获得另一个类的属性和方法。当我们继承一个父类时,通常我们需要重写其中的一些方法,以满足我们自己的需求。在这篇文章中,我…

玩机搞机-----带你了解高通刷机平台中的一些选项释义 玩转平台

很多刷机工具玩家都使用过,但对于一些新手来说。有些选项所表达的意义不太了解,选择与否严重会导致机型固件刷完个别功能出现故障,今天的这个博文对有些刷机平台中的选项做个简单的说明。 一 小米刷机平台 MiFlash.截止目前最新的版本是2022…

最新|2024年QS世界大学排名前100榜单发布

6月28日世界高等教育研究机构Quacquarelli Symonds(QS)率先公布了2024年世界大学排名,本次QS排名因指标和权重的重大调整,导致排名发生较大变化。知识人网小编将新的评分标准及前100的大学榜单整理如下,供读者参考。 前…

Unity渲染工程收集

NPR 非真实渲染 UnityURP-AnimeStyleCelShader SSR 屏幕空间反射 UnitySSReflectionURP

消息传输不丢失:掌握消息中间件的持久化机制

当涉及到消息的持久化和重放时,我们可以使用Spring Boot与RabbitMQ来实现这个场景。RabbitMQ支持消息的持久化,以确保在发送和接收过程中消息不会丢失。同时,我们可以使用消息的重放机制,以便在需要时重新发送消息。 首先&#xf…