1.SonarQube架构介绍
SonarQube平台由4个组件组成:
-
一台SonarQube Server启动3个主要过程:
- Web服务器,供开发人员,管理人员浏览高质量的快照并配置SonarQube实例
- 基于Elasticsearch的Search Server从UI进行后退搜索
- Compute Engine服务器,负责处理代码分析报告并将其保存在SonarQube数据库中
-
一个SonarQube数据库要存储:
- SonarQube实例的配置(安全性,插件设置等)
- 项目,视图等的质量快照。
- 服务器上安装了多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件
- 在构建/持续集成服务器上运行一个或多个SonarScanner,以分析项目
- 架构图如下:
6. SonarQube如何与其他ALM工具集成以及使用SonarQube的各种组件的位置:
-
- )开发人员将他们的代码放入他们最喜欢的SCM中:git,SVN,TFVC等。
- )Continuous Integration Server会触发自动生成,并执行运行SonarQube分析所需的SonarScanner。
- )分析报告将发送到SonarQube服务器进行处理。
2.sonarqube 8.0安装
前置条件:1)装好open JDK 11 ,解压即可,不用配置环境变量
2 )装好Postgresql 10
3 ) 准备好sonarqube 8.0社区版安装包
平台说明:
在Linux上运行,则必须确保:
-
vm.max_map_count
大于或等于262144 -
fs.file-max
大于或等于65536 - 运行SonarQube的用户可以打开至少65536个文件描述符
- 运行SonarQube的用户可以打开至少4096个线程
用root用户新增两个配置文件即可满足上述要求:
vim /etc/sysctl.d/99-sonarqube.conf(加入下面两行内容)
vm.max_map_count=262144
fs.file-max=65536
vim /etc/security/limits.d/99-sonarqube.conf(加入下面两行内容)
sonarqube - nofile 65536
sonarqube - nproc 4096
seccomp过滤器
默认情况下,Elasticsearch使用seccomp filter。在大多数发行版中,此功能已在内核中激活,但是在诸如Red Hat Linux 6的发行版中,此功能已停用。如果使用不具有此功能的发行版,并且无法在激活seccomp的情况下升级到较新版本,则必须通过sonar.search.javaAdditionalOpts
在$ SONARQUBE HOME / conf / sonar.properties_中进行更新来显式停用此安全层:
sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false
您可以使用以下方法检查seccomp在内核上是否可用:
$ grep SECCOMP /boot/config-$(uname -r)
如果您的内核具有seccomp,您将看到:
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP_FILTER=y CONFIG_SECCOMP=y
配置文件修改说明:
1.修改sonarqube 8.0/conf/wrapper.conf
取消注释这一行,并改为指向自己的open JDK 11的路径即可(即/path/to/my/jdk/bin/java)
wrapper.java.command=/usr/local/jdk11/jdk11-11/bin/java
2.修改sonarqube 8.0/conf/sonar.properties
需要修改的仅有以下三项,其他用默认配置即可
sonar.jdbc.username=sonarqube
sonar.jdbc.password=密码
sonar.jdbc.usr=jdbc:postgresql://IP:5432/sonarqube
权限修改说明:
sonarqube不能用root用户启动,故新建用户,并改权限
adduser sonarqube
passwd sonarqube (可省略这一步)
chown -R sonarqube:sonarque sonarqube 8.0
启动sonarqube 8.0 server说明:
su sonarqube
cd /sonarqube 8.0/bin/linux-x86-64
./sonar.sh console
如果输出的最后两行如下,就说明运行成功了:
jvm 1 | 2019.10.29 01:59:14 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
jvm 1 | 2019.10.29 01:59:14 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
启动成功后,浏览器中访问IP:9000即可进入sonarqube管理界面,登录名、密码 admin、 admin
再次运行 sonarqube 的时候不用通过 console 启动了,直接用 start 在后台运行就好了。
sonarqube 运行参数 console | start | stop | force-stop | restart | status | dump