SonarQube Server安装文档

SonarQube Server安装文档

0.安装环境

  1. Oracle JRE 8 或 Open JDK 8
  2. MySQL 5.6 或 5.7(必须使用UTF8字符集和区分大小写(CS)排序规则,仅支持InnoDB存储引擎,不支持MyISAM)
  3. SonarQube服务器需要至少2GB的RAM才能有效运行,1GB的可用RAM用于操作系统。
  4. 如果是在Linux环境中,SonarQube不得在root帐户下运行,必须创建一个普通用户,然后在普通用户下启动运行。

1.安装SonarQube服务器

下载链接:http://www.sonarqube.org/downloads/(下载时可能需要翻X软件)

版本选择:如果是用于Java开发,需要集成阿里规范,建议使用6.x.x版本,因为7.x.x版本开始不支持sonar-pmd插件3.0以下的版本,而很多人在集成阿里规范在sonar-pmd插件中时使用的是2.6-2.7版本,因此无法集成进入7.x.x版本中。而如果并非是用于Java代码的质量检查或无需集成阿里规范,则可以视情况使用7.x.x版本。

7.4升级内容:https://www.sonarqube.org/sonarqube-7-4/

下载完成SonarQube压缩包后,将其传输到Linux系统中,使用普通用户解压该压缩包(使用root用户解压,则后续需要对解压出来的文件夹进行授权),进入%SonarHome%/bin/linux-86-64/目录(假如为Linux64位系统,如果是其他系统则进入bin目录下的对应系统目录)。%SonarHome%为SonarQube解压后所在的目录。
然后运行./sonar.sh start命令(不能是以root身份启动),等待一会儿,通过其他电脑浏览器访问http://linux的IP地址:9000(需要是同一局域网内的电脑),如果出现SonarQube的界面,则是安装成功了。

2.配置SonarQube服务器

在同一台服务器中的MySql中创建一个新的空数据库,数据库名随意(为了方便后续描述,这里假定为sonarqube_db),字符集为utf-8,排序规则需要以ci结尾。

新建完数据库后,进入SonarQube的解压目录,进入%SonarHome%/conf/目录,输入vi sonar.properties来修改sonar.properties文件。

在其中找任意一个地方插入以下代码:

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonarqube_db?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
sonar.login=admin 
sonar.password=admin 

sonar.jdbc.url为连接数据库的url,127.0.0.1更换为该linux的IP地址,后续一串参数中,useUnicode=true代表使用Unicode字符串,characterEncoding=utf8为在前者的基础上指定字符编码为utf8,rewriteBatchedStatements=true为支持批量插入,可以提升插入的速度,useConfigs=maxPerformance相当于同时进行了下述设置:

  cachePrepStmts=true
  cacheCallableStmts=true
  cacheServerConfiguration=true
  useLocalSessionState=true
  elideSetAutoCommits=true
  alwaysSendSetIsolation=false
  enableQueryTimeouts=false

关于useConfig的设置,详情参考:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html 中的The useConfigs Option and the Configuration Property Files

sonar.jdbc.username为连接数据库的用户名。

sonar.jdbc.password为连接数据库的用户名。

sonar.sorceEncoding为sonar服务器本身的编码方式

sonar.login为SonarQube服务器管理员的登录名

sonar.password为SonarQube服务器管理员的密码

设置完了上述配置后,重启SonarQube服务,运行下述命令:%SonarHome%/bin/linux-86-64/bin/sonar.sh restart

等待重启完毕后,重新访问http://linux的IP地址:9000,这次访问会有的慢,因为需要初始化数据库信息。

初始化成功后,SonarQube服务器的默认语言为英文,如果需要汉化包的话,可以进入它提供的应用市场中下载。

操作步骤如下:

  1. 登录

  2. 进入http://linux的IP地址:9000/admin/marketplace

  3. 找到Chinese Pack,点击install

  4. 安装成功后,重启SonarQube服务,再次访问http://linux的IP地址:9000,即可看到中文界面

    注:可能存在安装成功中文包后界面还是英文的情况,这种情况与浏览器的语言设置有关。浏览器的默认语言并不一定与界面语言一致,例如Chrome的默认语言为其设置页面中,高级 -> 语言 下排名最上面的语言,但还可以额外设置Chrome的界面语言。因此如果出现了已经安装了中文包但界面还是英文的情况,可以去浏览器的设置页面,确认一下语言的设置情况。

3.让SonarQube开机自启

我使用的方式是写入在/etc/rc.d/rc.local文件中添加这一句语句su -c "/home/sonarqube/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh start" sonarqube

最后的sonarqube是新增加的普通用户的用户名(因为无法通过root用户启动sonarqube)。

但只添加这么一句话后,还无法做到开机自启,问题有两点:

  1. rc.local文件中的语句并没有与网上所言一样运行。
  2. 在解决了1问题后,发现在这种方式启动sonarqube的过程中无法调用JVM。

先说问题1,是由于权限问题导致的,其实仔细阅读rc.local文件,会注意到里面提到了这样一段

Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure
that this script will be executed during boot.

因此,去执行chmod +x /etc/rc.d/rc.local即可。

问题2是由于sonarqube运行Java默认情况下是通过java命令执行的,因此依赖于环境变量中是否存在java指令。而如果放进开机运行中,则环境变量还没初始化起来时就执行了,因此就会调用JVM失败。

所以对sonarqube的Java配置进行变更,使其直接调用相应文件位置即可。

修改%SonarHome%/conf/wrapper.conf,将其中的wrapper.java.command=java更改为wrapper.java.command=%JAVA_HOME%/bin/java,其中JAVA_HOME为jdk路径。

如我的jdk路径为/usr/src/jdk1.8.0_141,就更改为wrapper.java.command=/usr/src/jdk1.8.0_141/bin/java即可。

SonarQube与Jenkins整合

如果Jenkins未安装SonarQube Scanner for Jenkins的话,需要先在Jenkins->系统管理->管理插件->可选插件中,搜索SonarQube Scanner for Jenkins,然后安装,等待安装完成后重启。

安装完成后,需要进行的步骤如下:

  1. 系统设置->系统设置中,先添加一个SonarQube Server指定到我们的服务器。
  2. 勾选Enable injection of SonarQube server configuration as build environment variables
  3. 在下面的选项中,Name随便填,Server URL为http://linux的IP地址:9000,Server authentication token为SonarQube服务器中生成的一个token。(位于http://linux的IP地址:9000/account/security/中,在生成新令牌款内输入任意一个名称,点击生成,即可获取一个token,该token生成之后无法再次通过SonarQube获得,请务必保存在一个安全的地方)。

配置完了SonarQube后,需要去下载相应的扫描器放入Linux中,Jenkins才能配合该扫描器进行分析生成相应报告。

SonarQube Scanner 下载链接:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

根据平台下载对应版本即可

下载完成后,传输进Linux中,解压缩,记住文件路径,然后返回Jenkins配置中来。

进入系统管理->全局工具配置->SonarQube Scanner,点击SonarQube Scanner 安装,然后选择新增SonarQube Scanner,取消自动安装,在Name栏中随意填一个名称,如:”sonar-scanner“,然后在SONAR_RUNNER_HOME一栏中填写刚才SonarQube Scanner解压到的目录,如:/home/sonarqube/sonar-scanner-3.2.0.1227-linux

至此,基础准备已经完成了,接着就是在项目中进行配置。

选择项目,进入相应配置,在Post Steps构建中,点击Add post-build step增加构建步骤,从中找到Execute SonaQube Scanner项,单击。

在新增的选项框中,Task to run栏内填入scan,JDK选择相应JDK,然后在Analysis properties中填入以下信息:

sonar.projectKey=trunk
sonar.projectName=project-trunk
sonar.projectVersion=${SVN_REVISION}
sonar.sources=src
sonar.java.binaries=target/wisonic-1.0.0/WEB-INF/classes

其中:

sonar.projectKey为SonarQube分析项目的关键字,SonarQube根据这个去分辨不同的项目

sonar.projectName为SonarQube分析项目的名称,在SonarQube中展现出来的每个项目的名字就是这个,这个同样并不代表就会是一个项目,因此为了避免混淆,不是一个项目不要使用一样的名称

sonar.projectVersion为SonarQube中的版本,这里我直接使用了SVN的版本

sonar.sources为项目内的源码目录

sonar.java.binaries为编译完成的字节码文件所在的目录

至此,SonarQube与Jenkins整合就完毕了,点击编译,就会在编译完成后自动进行SonarQube的分析和上传相应报告啦。

SonarQube与Intellij IDEA

点击菜单栏中的File,然后选择Settings,选择Plugins,点击Browse repositories,搜索SonarLint,点击install,即可将IDEA中的插件下载下来。

下载安装完毕后,重启IDEA,进入Settings,选择Other Settings,在下拉列表中选择SonarLint General Settings,在右侧可以配置SonarQube的服务器了。

点击+号,在Configuration Name栏中随意输入一个名称,如:Jenkins Server SonarQube,然后选择右侧的sonarQube,在下面填入相应的URLhttp://linux的IP地址:9000

点击Next,选择用户密码登录或Token登录都可以,输入自己的用户名密码,或者是自己生成的相应token。然后点击Next,配置成功的话会出现SonarQube Server connection successfully edited.这么一句话,点击Finish按钮,SonarQube服务就关联起来了。

但是这里还没结束,接下来还需要与项目建立关联。

还是一样的File->Settings->Other Settings->SonarLint Project Settings,勾选Enable binding to remote SonarQube server,在Bind to server中选择刚刚建立关联的服务器,然后在SonarQube project栏的右侧点击Seach in list,选择该项目对应的SonarQube服务器上的项目,点击下方的OK即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值