Linux 下搭建 SonarQube

这是我参与更文挑战的第5天,活动详情查看: 更文挑战

背景

由于之前没有申请服务器,在自己 Window 电脑下搭建了自己 SonarQube 服务来跑质量测试,问题就是自己的电脑关机了,团队的小伙伴就用不了,现在申请了一台 Linux 系统的服务器,我可以重新搭建自己的一套了,顺便把 SonarQube 更新到最新版本。

SonarQube 能解决什么问题

SonarQube 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题,代码质量的评分,健康状况等。而且提供了丰富的插件,支持多种语言的检测, 如 Java、Javascript、Python、C#、等编程语言的检测。

一、环境配置

  • Linux 系统
  • JDK 11
  • SonarQube 8.8.0
  • PostgreSQL

二、安装 JDK

由于 SonarQube7.9 以上需要 JDK 11才能启动,下面我们必须安装 JDK11 版本。

(1)下载 JDK

// 安装到根目录下的 data/openjdk

// 遇到问题: 无法建立ssl连接
wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz

// 绕开用户认证下载
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
复制代码

(2)解压 JDK

// 解压 JDK
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
复制代码

(3)配置环境变量

// 编辑etc下的profile文件
vim /etc/profile

// /etc/profile文件中添加下面的内容
export JAVA_HOME=/data/openjdk/jdk-11
export PATH=$JAVA_HOME/bin:$PATH

// 刷新环境变量
source /etc/profile
复制代码

(4)查看 JDK 是否安装成功

$ java  -version
复制代码

jsdk11.png

三、安装 SonarQube

下载解压并安装,安装路径我是放到 data 目录下:

(1)下载 SonarQube

 wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.8.0.42792.zip
复制代码

(2)解压 SonarQube

uzip sonarqube-8.3.1.34397.zip
复制代码

(3)启动服务

// 进入安装路径下的bin cd /data/sonarqube/sonarqube-8.8.0.42792/bin/linux-x86-64
./sonar.sh start
复制代码

安装成功如图:

启动.png

(4)查看启动是否成功

如果发现启动了,出现问题,可以是以 console 来查看异常日志

// 进入安装路径下的bin cd /data/sonarqube/sonarqube-8.8.0.42792/bin/linux-x86-64
./sonar.sh console
复制代码

四、SonarQube 使用

服务启动成功,Sonarqube访问地址,一般是 ip地址 + 端口号9000,比如 http://172.28.206.100:9000, 页面默认是英文,大家可以到配置 > 应用市场 > 搜索 Chinese Pack(Language pack for Chinese)来进行安装,再重新启动,即可实现汉化。

五、Jenkins 结合项目使用

在使用之前先配置好相关信息:

  • (1)SonarQube Scanner 和 Git plugin 插件安装。

进入Manage Jenkins > Manage Pulgins > 可选插件 > 输入 SonarQube Scanner 和 Git plugin 安装。

  • (2)配置 SonarQube servers。

进入Manage Jenkins > Manage System > SonarQube servers 下,配置如下:

配置sonar.png

  • (3)配置 Git。

进入Manage Jenkins > Global Tool Configuration 下,配置好 Git 的名称和 路径。可通过 whereis git 来查看安装的路径。

配置git.png

  • (4)配置 SonarQube Scanner

进入Manage Jenkins > Global Tool Configuration 下。

配置scanner.png

  • (5)新增一个项目任务。

首页 > 新建Item > 新建一个任务 > 输入你的任务名 > 确定

j1.png

  • (6)配置代码地址和凭据。

自己新建的项目 > 源码管理,构建项目配置Gitlab 地址和 ssh私钥 。

配置ssh.png

  • (7)配置 Analysis properties。

在刚刚新建的项目 > 构建,配置 SonarQube Scanner 的 Analysis properties。

sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.projectVersion=1.0
sonar.projectName=${name}
sonar.projectKey=${name}
sonar.login=admin
sonar.password=123456
复制代码

配置分析.png

  • (8)构建项目。

输入项目名和对应的分支,点击开始构建即可。

构建.png

  • (9)查看代码质量。

构建完成,即可到 SonarQube平台上查看代码质量。

ok.png

六、遇到的问题

问题一:

提示 can not run elasticsearch as root,是因为 ElasticSearch 不允许使用 root 用户启动,新建一个用户,在新建用户下启动就行。

// 使用 Sonarqube 账号下进入启动
$ su - sonarqube 
复制代码

问题二:

提示 Cannot write Elasticsearch yml settings file ,是因为新建用户没有分配 Sonarqube 目录的读写权限。

// 给 Sonarqube 文件夹添加可读可写权限
$ chmod -R 777 sonarqube/
复制代码

问题三:

构建的时候,出现 fatal: Could not read from remote repository.Please make sure you have the correct access rights。

出现这个问题,可能是账号和秘钥配置有错,可到 Manage Jenkins > Manage Credentials > 全局凭据下修改。

私钥.png

七、最后

打开sonarqube 底下提示内嵌数据库只能用于测试场景
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。下节分享我们来解决下这个问题。

没有安装数据库.png

八、参考

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享