实战-SonarQube平台安装配置-20230624-测试成功
实战:SonarQube平台安装配置-2023.6.24(安装成功)(docker方式)
目录
[toc]
推荐文章
https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》
实验环境
sonarqube:9.9.0-community (docker方式部署)
SonarScanner 4.8.0.2856 (部署在宿主机上)
实验软件
链接:https://pan.baidu.com/s/1lI7wgnMqdrRl6aFxTSENDw?pwd=0820 提取码:0820 2023.6.24-实战:SonarQube平台安装配置(安装成功)(docker方式)
1、安装配置docker
- sonarQube安装官方文档
https://docs.sonarqube.org/9.9/setup-and-upgrade/install-the-server/
- Java (Oracle JRE 11 or OpenJDK 11)
下面是基于Docker的方式安装部署SonaQube:
## 创建数据目录
mkdir -p /data/devops6/sonarqube/{sonarqube_conf,sonarqube_extensions,sonarqube_logs,sonarqube_data}
chmod 777 -R /data/devops6/sonarqube/
## 运行
docker run -itd --name sonarqube9 \
-p 9000:9000 \
-v /data/devops6/sonarqube/sonarqube_conf:/opt/sonarqube/conf \
-v /data/devops6/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
-v /data/devops6/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
-v /data/devops6/sonarqube/sonarqube_data:/opt/sonarqube/data \
sonarqube:9.9.0-community
## 验证
[root@Devops6 ~]#docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
663638ab23b3 sonarqube:9.9.0-community "/opt/sonarqube/dock…" About a minute ago Up About a minute 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp sonarqube9
docker logs -f sonarqube9
这里看到Process[ce] is up说明,sonarQube程序已经启动成功了。
访问: http://172.29.9.101:9000/ 默认密码是 admin admin
被要求强制更改密码:admin/Admin@123
sonarqube:9.9.0版本的登录界面:
2、安装中文插件
在线安装或者手动上传插件。
在线安装:操作如下图
来到插件市场安装插件:
装完插件,是需要重启sonarQube的。
点击接受风险后,才可以在插件市场里安装插件:
重启server:
重启后,登录查看效果:
3、配置Scanner
scanner的类型有很多, 可以通过官网:https://docs.sonarqube.org/8.9/analysis/overview/ 获取支持的列表。
- 变更项目代码: 可以使用构建工具进行扫描。例如maven、ant、gradle可以在配置文件中引入对应的配置。
- 不变更项目代码配置: 可以使用Jenkins或其他平台的扩展插件, 以及使用命令行进行扫描。
- Gradle - SonarScanner for Gradle
- .NET - SonarScanner for .NET
- Maven - use the SonarScanner for Maven
- Jenkins - SonarScanner for Jenkins (Jenkins 集成插件)
- Azure DevOps - SonarQube Extension for Azure DevOps (devops平台扩展插件)
- Ant - SonarScanner for Ant
- anything else (CLI) - SonarScanner(更加通用的扫描命令行)
使用更加灵活的命令行工具进行扫描, 可以在不更改项目配置的前提下进行代码扫描:
复制链接地址:
https://docs.sonarqube.org/8.9/analysis/scan/sonarscanner/
## 进入实验目录
cd /data/devops6
## 下载包
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
## 解压
unzip sonar-scanner-cli-4.8.0.2856-linux.zip
## 设置环境变量
vim /etc/profile
export SONAR_SCANNER_HOME=/data/devops6/sonar-scanner-4.8.0.2856-linux
export PATH=$SONAR_SCANNER_HOME/bin:$PATH
source /etc/profile
## 测试生效
[root@Devops6 sonar-scanner-4.8.0.2856-linux]# sonar-scanner -v
INFO: Scanner configuration file: /data/devops6/sonar-scanner-4.8.0.2856-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.8.0.2856
INFO: Java 11.0.17 Eclipse Adoptium (64-bit)
INFO: Linux 3.10.0-957.el7.x86_64 amd64
⚠️ 注意JDK版本
这里请注意JDK版本的问题, 默认安装的sonarscanner是使用自带的jdk。通过上面的显示可以发现是jdk1.11版本, 如果想使用系统默认的jdk版本,可以修改scanner可执行程序的配置。如下所示:
[root@devops sonar-scanner-4.7.0.2747-linux]#pwd
/usr/local/sonar-scanner/sonar-scanner-4.7.0.2747-linux
[root@devops sonar-scanner-4.7.0.2747-linux]#ls
bin conf jre lib
[root@devops sonar-scanner-4.7.0.2747-linux]#vim bin/sonar-scanner
### 编辑约第42行, true改成false
42 use_embedded_jre=false
43 if [ "$use_embedded_jre" = true ]; then
44 export JAVA_HOME="$sonar_scanner_home/jre"
45 fi
### 更改后,再次验证,发现变成了系统jdk版本。 更改生效。
[root@devops sonar-scanner-4.7.0.2747-linux]#sonar-scanner -v
INFO: Scanner configuration file: /usr/local/sonar-scanner/sonar-scanner-4.7.0.2747-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.7.0.2747
INFO: Java 1.8.0_322 Temurin (64-bit)
INFO: Linux 3.10.0-957.el7.x86_64 amd64
https://docs.sonarqube.org/9.9/requirements/prerequisites-and-overview/
FAQ
老版本默认登录界面
- 这是SonarQubeLTS 7.9.6 的默认首页:
- 这是SonarQubeLTS 8.9.8 的默认首页:
配置强制登录
默认所有项目都可以公开的查看,在企业内肯定要配置成私有的。只有登录后才能查看。(sonarqube8.9.1 默认已经开启了,低于该版本的可以手动开启)
手动安装插件
手动上传插件
下载好的插件包会放在downloads目录下,重启sonarQube后就被放到了plugins目录下;
或者直接放在plugins目录下,重启sonarQube下,也是可以的;
为什么需要手动安装? 由于不同区域的不同网络原因,可能在线源会出现下载插件失败的情况,超时。本次以中文插件为例,为大家讲述如何手动离线安装一次插件。
Caused by: org.sonar.api.utils.SonarException: Fail to download: https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.29/sonar-l10n-zh-plugin-1.29.jar (no proxy)
at org.sonar.core.util.DefaultHttpDownloader.failToDownload(DefaultHttpDownloader.java:155)
at org.sonar.core.util.DefaultHttpDownloader.download(DefaultHttpDownloader.java:150)
at org.sonar.server.plugins.PluginDownloader.downloadRelease(PluginDownloader.java:152)
at org.sonar.server.plugins.PluginDownloader.download(PluginDownloader.java:126)
... 47 common frames omitted
Caused by: java.net.SocketTimeoutException: Read timed out
- 阅读插件说明文档:https://github.com/xuhuisheng/sonar-l10n-zh/tree/master 找到sonarqube 版本对应的插件版本。
选择Releases
找到当前SonarQube对应的版本, 我的版本是8.9.1, 所以下载 :
cd /data/cicd/sonarqube/sonarqube_extensions/downloads
wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.29/sonar-l10n-zh-plugin-1.29.jar
chmod +x sonar-l10n-zh-plugin-1.29.jar
docker restart sonarqube
- 插件也可以直接在插件源:https://update.sonarsource.org/中下载的:
获得插件下载url:
sonarQube的lib目录
## lib目录(低于SonarQube8.9.1可以配置持久化,以支持多分支插件。)
mkdir -p /data/cicd/sonarqube/sonarqube_lib
cd /data/cicd/sonarqube/sonarqube_lib
docker cp sonarqube:/opt/sonarqube/lib/* ./
docker run -itd --name sonarqube \
-p 9000:9000 \
-v /data/cicd2/sonarqube/sonarqube_conf:/opt/sonarqube/conf \
-v /data/cicd2/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions \
-v /data/cicd2/sonarqube/sonarqube_logs:/opt/sonarqube/logs \
-v /data/cicd2/sonarqube/sonarqube_data:/opt/sonarqube/data \
-v /data/cicd2/sonarqube/sonarqube_lib:/opt/sonarqube/lib \
sonarqube:8.9.1-community
安装包下载
- 安装包下载链接:
https://www.sonarqube.org/downloads/
Embedded数据库
注意:这里的Embedded数据库仅仅作为实验目的
生产里一般会用pg数据库:
k8s方式部署snoarQube
Elasticearch里的数据不是很重要
Elasticearch里的数据不是很重要,就是缓存。当然,也是可以不对数据做持久化的。
扩展:Docker运行sonarscanner
docker run \
--rm \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
-e SONAR_LOGIN="myAuthenticationToken" \
-v "${YOUR_REPO}:/usr/src" \
sonarsource/sonar-scanner-cli
关于项目参数可以参考:https://docs.sonarqube.org/latest/analysis/analysis-parameters/ 各种语言的扫描示例:https://docs.sonarqube.org/latest/analysis/languages/
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码 x2675263825 (舍得), qq:2675263825。
🍀 微信公众号 《云原生架构师实战》
🍀 语雀
https://www.yuque.com/xyy-onlyone
🍀 csdn https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
🍀 知乎 https://www.zhihu.com/people/foryouone
最后
好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!