Jenkins集成SonarQube代码审查自动化

Jenkins集成**SonarQube详细安装及配置**

\1. 环境

<1>.前置条件:jdk1.8,mysql >=5.6 && <8.0

<2>.系统:centos7.2-x86_64

<3>.软件下载目录:/home/sonar/

<4>.软件安装目录:/home/sonar/

<5>.Sonarqube版本:SonarQube7.6(最新版本不支持mysql,但支持oracle、postgreSQL9.3、6.SQLServer2014/2016/2017,综合考量后,决定用SonarQube7.6)

<6>.sonarqube下载地址:https://www.sonarqube.org/downloads/(拉下页面最底部有个Historical Downloads可选择版本进行下载

<7>.Sonar-scanner下载扫描器地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

\2. 安装环境

<1>安装mysql数据库,需要记住安装时Mysql数据库的的账号密码;

<2>安装好相关的Mysql后,需要在数据库中创建一个数据库,命名为sonar(因已有同事安装好mysql,只需要建库就可以):

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

<3>创建一个sonar用户,设置用户名账号密码为sonar:

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

<4>把已创建的数据库sonar的所有权限赋予给sonar用户:

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';

GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

FLUSH PRIVILEGES;

<5>安装SonarQube

第一步:将下载的sonarqube-7.6.zip进行解压

unzip  sonarqube-6.7.5.zip  解压包

  第二部:配置环境变量

    第三步:配置sonar.properties


打开属性文件后,找到mysql配置处,加入如下圈红代码


代码解析:

第一行sonar.jdbc.url: 链接myslq数据库地址,数据库名。sonar问号后面是格式相关;

第二/三行: mysql的账号/密码;

第四行: 支持的编码格式;

第五/六行: sonar登录时的账号密码;默认就是admin

6.启动SonarQube (重点,这块有点坑了)

SonarQube 启动不能用root启动,所以新建一个用户。必须先启动elasticsearch,才能再启动sonar。sonar文件目录里面有elasticsearch这个目录。

启动的时候会报错,这里面有报错的资料。

https://blog.csdn.net/u012448904/article/details/81624037

[root@jenkins /]# useradd sonar

[root@jenkins /]# chown -R sonar:sonar sonarqube-7.6

[root@jenkins /]# chmod 777 -R sonarqube-7.6

[root@jenkins /]# vi sonarqube-7.6/elasticsearch/config/elasticsearch.yml

//开启端口和指定服务

Network.host:192.168.0.1

http.prot:9200

进行用户切换,进行启动sonar




使用sonarqube 地址进行登录,出现如下界面,Sonarqube启动成功


\7. 安装sonar-scanner和配置

第一步:将下载的sonar-scanner-cli-4.2.0.1873-linux.zip进行解压后移动到/usr/local目录下并重命名为“sonar-scanner”

unzip  sonar-scanner-cli-4.2.0.1873-

linux.zip  解压包

第二步:配置环境变量



  第三步:source /etc/profile 保存编辑内容


  第四步:编辑vi sonar-scanner.properties文件,加入如下代码,并保存,相关数据库url帐号密码请根据系统本身情况填写



第五步:进入项目根目录下,添加sonar-project.properties文件,参数如下:

//与项目名称一样即可(必填项)

Sonar.projectKey=demo

//与项目名称一样即可(必填项)

Sonar.projectName=demo

需要分析的源码目录,相对路径(必填项)

Sonar.sources=src/main

//编译后的classes目录,相对路径(必填项)

Sonar.jva.binaries-build/calsses

Sonar.sourceEncoding=UTF-8


启动扫描项目:sonar-scanner,并有如下字样表明扫描启动成功


打开http://localhost:9000/,能看到主页出现了分析项目的概要图


\8. Jenkins集成Sonarr插件

<1>.在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins


<2>.插件安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息:


其中认证token需要登陆sonarqube后,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成,再把生成的generate内容复制,填入jenkins添加凭据。


<3>.在系统设置-全局工具配置中,找到SonarQube Scanner模块,填写相关信息:


\9. 在jenkins中新建一个自由风格项目


<1>.源码管理这里选择svn或者git都可以,我这里是选择的svn


<2>.执行代码分析,新增一个构建步骤,选择Execute SonarQube Scanner


<3>.在Analysis properties处,输入sonarqube的检查参数


参数说明:

#项目key (与项目名称一样即可,必填项)

sonar.projectKey=

#项目名称和版本(必填项)

sonar.projectName=

sonar.projectVersion=1.0

#源码位置(必填项,相对于jenkins的workspace路径,相对路径)

sonar.sources=/opt/data/jenkins/workspace/..../..../src/main/java/

#编译后的class位置(必填项,相对路径同上)

sonar.java.binaries=/opt/data/jenkins/workspace/..../..../build/classes

配置完成后,点击构建。构建成功后即可在sonar地址中登陆访问进行查看代码扫描情况

\10. 在jenkins中新建一个流水线任务(Pipeline)

<1>.在流水线模块处,编辑Pipeline script:

Sonar.project.properties文件参数可以在脚本中直接加入,也可以放在项目根目录下,进行调用

-Dsonar.projectKey=${projectKey} -Dsonar.projectName=${projectName} -Dsonar.projectVersion=${projectVersion} -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=${sources} -Dsonar.java.binaries=${binaries}

<2>.配置完成后,点击构建。构建成功后即可在sonar地址中登陆访问进行查看代码扫描情况

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容