内容简介:sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。SonarQube平台由4部分组成:
简介
sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。
系统构成
SonarQube平台由4部分组成:
- SonarQube服务器
- Web服务器的开发者,管理者,浏览质量快照和配置SonarQube实例
- 基于Elasticsearch搜索服务器从UI向后搜索
- 负责处理代码分析报告计算引擎服务器,并将其保存在数据库SonarQube
- SonarQube数据库来存储
- 多个插件
- 一个或多个 SonarQube Scanners :可以与CI服务进行集成
系统构成和相互关系:
安装SonarQube
sonarqube安装很简单, 下载 (直接win下载,然后上传到 linux 服务器)安装包后直接解压即可:
# 创建sonar用户及工作目录 $ useradd sonar # 解压 $ unzip sonarqube-6.7.5.zip $ cd /home/sonar/sonarqube-6.7.5 # 在当前终端启动(方便排错) $ ./bin/linux-x86-64/sonar.sh console # 直接在后台运行 $ ./bin/linux-x86-64/sonar.sh start
说明:sonarqube依赖于Elasticsearch插件,es插件不能用root运行,所以使用普通用户运行sonar,否则将会出现如下报错:
Caused by: java.lang.RuntimeException: can not run elasticsearch as root # Elasticsearch不能用root运行。
参考: https://blog.csdn.net/zdyueguanyun/article/details/79447260
检查启动状态
$ netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 771/sshd tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 5258/java tcp6 0 0 :::22 :::* LISTEN 771/sshd tcp6 0 0 127.0.0.1:9092 :::* LISTEN 5343/java tcp6 0 0 127.0.0.1:35048 :::* LISTEN 5443/java tcp6 0 0 :::9000 :::* LISTEN 5343/java tcp6 0 0 127.0.0.1:9001 :::* LISTEN 5273/java
web管理
默认由9000端口提供UI管理页面,在浏览器访问: http://192.168.228.129:9000 ,界面如下(管理员:admin,密码:admin):
数据库配置
创建数据库并授权
-
创建一个单独的库sonar并授权给sonar用户:
mysql> create database sonar; mysql> CREATE USER 'sonarqube'@'%' IDENTIFIED BY '123456';
-
mysql调优:
$ vim /etc/my.cnf binlog-format=MIXED # 指定binlog格式为mixed。默认为STATEMENT,数据无法正常migration innodb_buffer_pool_size = 200M # 最佳数值为70%~80%服务器内存 query_cache_size = 15M # 参考:https://www.percona.com/blog/2007/11/01/innodb-performance-optimization-basics/ $ systemctl restart mysqld
-
排错1:
-
无法初始化数据库:
# 报错:logs/web.log Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
-
解决办法:
$ vim /etc/my.cnf binlog-format=MIXED # 指定binlog格式为mixed。默认为STATEMENT,数据无法正常 # 参考:https://www.devside.net/wamp-server/mysql-error-impossible-to-write-to-binary-log-since-binlog_format-statement
-
-
排错2:
-
历史脏数据冲突:
# 报错: Web server startup failed: Current version is too old. Please upgrade to Long Term Support version firstly.
-
解决办法: 清理历史数据(因首次安装,直接drop掉sonar表,然后重建),然后重启sonar即可!
-
配置sonarqube
系统要求
内核
- vm.max_map_count 大于等于 262144
- fs.file-max 大于等于 65536
- 文件描述符 65536
- 线程数 2048
sysctl -w vm.max_map_count=262144 sysctl -w fs.file-max=65536 ulimit -n 65536 ulimit -u 2048
系统文件
默认情况下,Elasticsearch数据存储在 <install_directory> / data中 ,但不建议用于 生产实例 。相反,您应该将此数据存储在其他位置,最好是在具有快速I / O的专用卷中。除了保持可接受的性能之外,这样做还可以简化SonarQube的升级。
$ mkdir -p /var/sonarqube/data $ mkdir -p /var/sonarqube/temp $ chown -R sonar:sonar /var/sonarqube
配置sonar
$ vim conf/sonar.properties sonar.jdbc.username=sonar # 数据库用户名 sonar.jdbc.password=123456 # 数据库密码 sonar.jdbc.url=jdbc:mysql://192.168.228.129:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false # 数据库服务器 sonar.path.data=/var/sonarqube/data sonar.path.temp=/var/sonarqube/temp $ ./bin/linux-x86-64/sonar.sh restart
加入systemd管理
$ vim /usr/lib/systemd/system/sonar.service [Unit] Description=SonarQube service After=network.target syslog.target [Service] Type=forking User=sonar Group=sonar ExecStart=/bin/bash /home/sonar/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh start ExecStop=/bin/bash /home/sonar/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh stop Restart=always LimitNOFILE=65536 [Install] WantedBy=multi-user.target $ systemctl enable sonar # 开机启动
部署sonaqube集群: https://docs.sonarqube.org/display/SONAR/Installing+a+SonarQube+cluster
安装SonarQube插件
管理插件的方法有如下两种:
- 在soanrqube UI界面,通过 Marketplace 安装插件;
- 手动安装——当sonar主机无法访问外网时需要进行手动安装。
Marketplace
- 前提:
- sonar服务器能上网;
- 拥有管理员权限。
- 安装方法:
- 在marketplace找到需要的插件及捆绑的插件;
- 点击安装即可!
- 安装完成后点击“ Restart ”使新插件生效。
手动安装
- 找到需要安装的插件: https://docs.sonarqube.org/display/PLUG/SonarSource+Plugins ;
- 下载所需版本的插件到
*$SONARQUBE_HOME/extensions/plugins
,删除旧版本的插件; - 然后重启sonar服务:
systemctl restart sonar
。
ldap集成
直接使用admin用户在UI界面安装(可能有点慢):
安装完成后“ Restart ”生效,可以再sonar服务器查看:
![image-20181023160837712](/Users/chunyu/Library/Application Support/typora-user-images/image-20181023160837712.png)
如果因网络问题安装失败,可以 手动安装:
- 下载插件: https://jar-download.com/artifacts/org.sonarsource.ldap/sonar-ldap-plugin/
- 上传到sonar服务器,/home/sonar/sonarqube-6.7.5/extensions/plugins/ 并解压;
- 重启sonar。
配置sonar.properties
参考: https://docs.sonarqube.org/display/SONAR/LDAP+Integration#LDAPIntegration-ConfigurationExamples
示例:
# 配置ldap服务器 sonar.security.realm=LDAP ldap.url=ldap://ldap.chunyu.club ldap.bindDn=cn=reader,dc=chunyu,dc=club ldap.bindPassword=xxxxxxxxxxx # User Configuration ldap.user.baseDn=OU=People,DC=chunyu,DC=club ldap.user.request=(uid={login}) ldap.user.realNameAttribute=uid ldap.user.emailAttribute=mail # Group Configuration ldap.group.baseDn=ou=groups,DC=chunyu,DC=club ldap.group.request=(&(objectClass=posixGroup)(memberUid={uid}))
升级SonarQube
官方文档: https://docs.sonarqube.org/display/SONAR/Upgrading
安装Scanner
下载地址 ,本地下载然后上传到sonar服务器。
# 解压到任何目录都可以,后续通过系统环境变量配置scanner相关命令 $ unzip sonar-scanner-cli-3.2.0.1227-linux.zip ## 为了方便管理,将解压文件放到sonar安装目录下:/home/sonar/sonarqube-6.7.5/ $ mv sonar-scanner-3.2.0.1227-linux /home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0 $ chown -R sonar:sonar /home/sonar/sonarqube-6.7.5/
配置系统环境变量
$ vim /etc/profile export SONAR_SCANNER_HOME=/home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0 export PATH=${SONAR_SCANNER_HOME}/bin:${PATH} $ source /etc/profile # 检查配置结果 $ sonar-scanner -v INFO: Scanner configuration file: /home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0/conf/sonar-scanner.properties INFO: Project root configuration file: NONE INFO: SonarQube Scanner 3.2.0.1227 INFO: Java 1.8.0_121 Oracle Corporation (64-bit) INFO: Linux 3.10.0-693.el7.x86_64 amd64 # Success!
SonarQube使用指南
创建sonar-project.properties文件
进入要进行代码分析的项目根目录,新建sonar-project.properties文件,内容如下:
# must be unique in a given SonarQube instance sonar.projectKey=test:python # this is the name displayed in the SonarQube UI sonar.projectName=chunyu_community # 要展示在UI界面的项目名称 sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # Since SonarQube 4.2, this property is optional if sonar.modules is set. # If not set, SonarQube starts looking for source code from the directory containing # the sonar-project.properties file. sonar.sources=./ # 项目文件目录 # Encoding of the source code. Default is default system encoding #sonar.sourceEncoding=UTF-8
执行命令:
$ sonar-scanner
查看结果
待上述命令执行结束后便可以在UI界面看到扫描结果:
以上所述就是小编给大家介绍的《原 荐 SonarQube+Scanners代码质量管理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- SonarQube 搭建代码质量管理平台(一)
- SonarQube 搭建代码质量管理平台(二)
- SonarQube 7.0 发布,代码质量管理平台
- SonarQube 7.1 发布,代码质量管理平台
- SonarQube 7.7 发布,代码质量管理平台
- SonarQube 6.7.3 发布,代码质量管理平台
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。