这是我参与更文挑战的第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
复制代码
三、安装 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
复制代码
安装成功如图:
(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 下,配置如下:
- (3)配置 Git。
进入Manage Jenkins > Global Tool Configuration 下,配置好 Git 的名称和 路径。可通过 whereis git 来查看安装的路径。
- (4)配置 SonarQube Scanner。
进入Manage Jenkins > Global Tool Configuration 下。
- (5)新增一个项目任务。
首页 > 新建Item > 新建一个任务 > 输入你的任务名 > 确定
- (6)配置代码地址和凭据。
自己新建的项目 > 源码管理,构建项目配置Gitlab 地址和 ssh私钥 。
- (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
复制代码
- (8)构建项目。
输入项目名和对应的分支,点击开始构建即可。
- (9)查看代码质量。
构建完成,即可到 SonarQube平台上查看代码质量。
六、遇到的问题
问题一:
提示 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 > 全局凭据下修改。
七、最后
打开sonarqube 底下提示内嵌数据库只能用于测试场景
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。下节分享我们来解决下这个问题。