SonarQube

第1章 安装mysql

1.下载mysql 5.7

下载地址

https://downloads.mysql.com/archives/community/
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

2.创建目录

mkdir -p /data/soft
mkdir -p /data/mysql_3306/

3.下载并解压软件

cd /data/soft
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /opt/
mv /opt/mysql-5.7.28-linux-glibc2.12-x86_64 /opt/mysql-5.7.28
ln -s /opt/mysql-5.7.28 /opt/mysql 

4.设置环境变量

echo "export PATH=$PATH:/opt/mysql/bin" >>/etc/profile
source /etc/profile
mysql -V

5.清除遗留环境

rpm -qa|grep mariadb
yum remove mariadb-libs -y
rm -rf /etc/my.cnf

6.安装mysql依赖包

yum install -y libaio-devel

7.创建mysql普通用户并授权

useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /data/
chown -R mysql.mysql /opt/mysql*

8.初始化数据库

mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/data/mysql_3306/

9.编辑mysql配置文件

cat> /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/opt/mysql
datadir=/data/mysql_3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
EOF

10.准备启动脚本并启动数据库

cp /opt/mysql/support-files/mysql.server  /etc/init.d/mysqld
chkconfig --add mysqld
systemctl start mysqld
netstat -lntup|grep 3306

11.前台启动

/opt/mysql/bin/mysqld --basedir=/opt/mysql --datadir=/data/mysql_3306 --plugin-dir=/opt/mysql/lib/plugin --user=mysql --log-error=/data/mysql_3306/log/mysql.log --pid-file=/data/mysql_3306/db01.pid --socket=/tmp/mysql.sock

12.修改root密码

mysqladmin password 

13.登陆mysql

mysql -uroot -p123456

第2章 安装SonarQube

1.安装java环境

yum install java -y

2.解压并创建软链接

unzip sonarqube-7.0.zip -d /opt/
ln -s /opt/sonarqube-7.0/ /opt/sonarqube

3.创建普通用户并更改授权

useradd sonar -M -s /sbin/nologin
chown -R sonar.sonar /opt/sonarqube*

4.配置sonarqube数据库连接信息

[root@sonar ~]# vim /opt/sonarqube/conf/sonar.properties          
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

5.指定sonarqube启动用户

vim /opt/sonarqube/bin/linux-x86-64/sonar.sh 
RUN_AS_USER=sonar

6.创建sonarqube数据库

mysql -uroot -p123456 -e 'create database sonar default character set utf8;'
mysql -uroot -p123456 -e 'show databases;'

7.编写systemd启动文件

cat >/usr/lib/systemd/system/sonar.service<<'EOF'
[Unit]
Description=sonar

[Service]
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
Type=forking
User=sonar
Group=sonar

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload

8.启动SonarQube

systemctl start sonar.service 

9.检查服务

[root@sonar ~]# netstat -lntup|grep java
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      18202/java          
tcp6       0      0 :::9000                 :::*                    LISTEN      18305/java          
tcp6       0      0 127.0.0.1:9001          :::*                    LISTEN      18227/java          
tcp6       0      0 127.0.0.1:36949         :::*                    LISTEN      18475/java

10.启动报错

使用systemd启动后失败,查看es日志发现提示max file descriptors太低:

[root@sonar /opt/sonarqube/logs]# tail -f /opt/sonarqube/logs/es.log 
2020.05.14 09:51:19 INFO  es[][o.e.t.TransportService] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
2020.05.14 09:51:19 WARN  es[][o.e.b.BootstrapChecks] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
2020.05.14 09:51:19 WARN  es[][o.e.b.BootstrapChecks] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

echo "vm.max_map_count=262144" >> /etc/sysctl.conf
echo "root             -       nofile          65536"  >> /etc/security/limits.conf
echo "sonar            -       nofile          65536"  >> /etc/security/limits.conf
sysctl -p

第3章 初始化SonarQube

1.使用admin登陆

登陆地址为:

http://10.0.0.203:9000/about

账号密码均为admin:

2.生成token

在输入框内输入jenkins,然后点击Generate生成token,需要保存好这个tocken,后面会用到

3.选择项目类型

点击Done之后会给我们生成提示信息:

第4章 安装插件

1.在线安装中文插件方法

Administration-->Marketplace-->chinese-->install

2.离线安装插件方法

离线安装的话只需要将插件压缩包解压到指定目录然后重启服务即可,解压之前可以先备份插件目录

mv /opt/sonarqube/extensions/plugins/ /opt/sonarqube/extensions/plugins_bak
tar xf sonar_plugins.tar.gz -C /opt/sonarqube/extensions/

3.重启服务

systemctl restart sonar.service 

4.浏览器访问查看

第5章 安装客户端

1.jenkins主机安装客户端

我们需要将jenkins拉取的代码推送到SonarQube,所以需要在jenkins主机上安装sonar客户端:

unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /opt/
cd /opt/
ln -s sonar-scanner-4.0.0.1744-linux sonar-scanner

写入环境变量:

echo 'export PATH=$PATH:/opt/sonar-scanner/bin' >> /etc/profile
source /etc/profile

2.推送代码到SonarQube

进入代码目录执行推送命令

注意:这里的推送命令是初始化的时候生成的,Dsonar.login的值也是初始化时候生成的token

cd /var/lib/jenkins/workspace/h5game/
/opt/sonar-scanner/bin/sonar-scanner  \
  -Dsonar.projectKey=html \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://10.0.0.203:9000 \
  -Dsonar.login=4f57dfb332463fa8220be49856a0f1d27c88a142

我们也可以将服务器相关的命令写入配置文件里,这样推送的命令可以精简一些:

vim /opt/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://10.0.0.203:9000 
sonar.login=be400d585a529e6e2152e6742fe3f5cb3fc803d2
sonar.sourceEncoding=UTF-8

然后推送命令只需要指定两个选项即可:

cd /var/lib/jenkins/workspace/my-freestyle-job/
sonar-scanner \
  -Dsonar.projectKey=html \
  -Dsonar.sources=.

3.web页面查看扫描结果

4.执行报错解决

报错现象:推送的时候提示我们找不到node环境

解决方法:在jenkins服务器上安装nodejs环境,然后重新推送就不会再报错了:

cd /opt/
wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
tar xf node-v12.13.0-linux-x64.tar.xz
mv node-v12.13.0-linux-x64 node
echo 'export PATH=$PATH:/opt/node/bin' >> /etc/profile
source /etc/profile
npm -v
node -v

第6章 与Jenkins集成

1.配置SonarQube凭证信息

在jenkins页面进入 系统管理-->系统配置-->找到sonar的配置

填写sonar服务器信息:

此时点击添加凭证按钮没有反应,没关系,先保存一下,然后回来再添加一次即可:

填写sonar初始化的token信息:

添加完成后就可以选择sonar的凭证了:

2.配置sonar客户端家目录

点击系统管理-->全局工具配置-->找到SonarQube Scanner选项:

3.工程中配置sonar构建选项

添加构建步骤:

填写详细信息:

填写参数:

sonar.projectName=${JOB_NAME} 
sonar.projectKey=html
sonar.sources=.

4.调整构建执行顺序

注意!!!这里我们还需要将构建顺序调整一下,先执行代码扫描,然后再发布版本

可以直接拖动选项块来调整顺序,最终结果如下:

5.发布测试

我们可以使用git尝试发布代码,然后查看执行是否成功:

git branch 
git pull
vim index.html 
git add .
git commit -m "v5.0 稳定版"
git push -u origin master

sonar查看是否发布:

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