sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。
SonarQube平台由4部分组成:
系统构成和相互关系:
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
默认由9000端口提供UI管理页面,在浏览器访问:http://192.168.228.129:9000 ,界面如下(管理员:admin,密码:admin):
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
$ 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
$ 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_HOME/extensions/plugins
,删除旧版本的插件;systemctl restart sonar
。直接使用admin用户在UI界面安装(可能有点慢):
安装完成后“Restart”生效,可以再sonar服务器查看:
如果因网络问题安装失败,可以手动安装:
参考: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}))
官方文档:https://docs.sonarqube.org/display/SONAR/Upgrading
下载地址 ,本地下载然后上传到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!
进入要进行代码分析的项目根目录,新建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界面看到扫描结果:
(adsbygoogle = window.adsbygoogle || []).push({});