linux + sonar

361 阅读3分钟

安装jdk 参考

step1:下载jdk

64位系统安装包

wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz

step2:解压安装包

mkdir /usr/local/jdk

tar -zxf openjdk-11.0.1_linux-x64_bin.tar.gz -C /usr/local/jdk

step3:配置环境变量

1.配置JAVA_HOME

echo "JAVA_HOME=/usr/local/jdk/jdk-11.0.1" | sudo tee -a ~/.bash_profile

&&echo "export JAVA_HOME" | sudo tee -a ~/.bash_profile

2.配置Path环境变量

echo "PATH=$PATH:$JAVA_HOME/bin" | sudo tee -a ~/.bash_profile

echo "export PATH" | sudo tee -a ~/.bash_profile

source ~/.bash_profile

step4:验证是否安装成功

java -version

如果仍显示java是command not found, 可以尝试重启服务器,再验证(环境变量生效)

安装及配置sonar 参考

step1:下载sonar

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.5.1.38104.zip

step2:解压安装包

step3:创建用户

不可以用root用户去启动sonar服务,会报错, 查看es.log文件

java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.2.jar:5.6.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.2.jar:5.6.2]

1.创建用户sonar

adduser sonar

  1. 为sonar用户设置密码 passwd sonar

3.修改sonarqube的目录和用户组为sonar

chown -R sonar:sonar sonarqube-8.5.1.38104

启动sonar

./sonar.sh start

./sonar.sh stop 停止服务
./sonar.sh restart 重启服务

遇到的问题

root用户启动报错,查看es.log

参考2

es启动报错

参考

ERROR: [1] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max number of threads [1024] for user [sonar] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

linux启动sonar问题参考

使用root用户启动sonar服务后,报错,此时再切换到非root用户启动sonar,仍会报错,原因:使用root用户启动后,生成temp文件,temp文件所属为root,后使用非root用户启动时,没有temp文件权限,需要将temp文件的权限给到需要启动sonar的用户参考

chown -R sonar:sonar temp

2020.12.10 10:24:11 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /root/sonar/sonarqube-8.5.1.38104/temp
2020.12.10 10:24:11 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /root/sonar/sonarqube-8.5.1.38104/temp

安装PostgreSQL并配置

参考

初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户。参考

step1:创建一个新的linux用户

sudo adduser dbuser

step2:切换到postgres用户

sudo su - postgres

step3:创建数据库用户 dbuser

CREATE USER dbuser WITH PASSWORD 'password';

step4:创建sonarqube数据库

CREATE DATABASE sonarqube OWNER dbuser;

GRANT ALL PRIVILEGES ON DATABASE sonarqube to dbuser;

step5:创建my_schema

create schema my_schema;

配置sonar的配置文件

启动sonar

step1:切换到sonar用户

su sonar

step2:进入到sonar安装目录

step3:启动sonar

汉化,下载中文插件,不成功的情况 参考

可以自己下载jar包安装到sonar目录下,再重启sonar服务即可生效

使用sonar时候遇到的一些问题

Jenkins不同分支的分析

step1:下载插件

注意:不同版本的适配,保证插件与sonarqube版本适配

step2:将插件导入到sonar的安装目录

需要导入到两个位置:

  1. /extensions/plugins

  2. /lib/commons (这个目录可能不存在,创建即可)

step3:在配置文件中添加

配置文件目录:/sonarqube/conf/sonar.properties

sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=web

sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=ce

step4:重启sonarqube

image.png

step5:在Jenkins中进行配置

原配置中增加 sonar.branch.name属性

image.png

step6:扫描结束后,即可在sonarqube后台查看不同分支的分析

参考