文章目录
- 前言
- 一、docker方式安装sonar
- 二、启动容器
- 三、创建数据库
- 四、启动sonarqube
- 五、访问sonar
- 六、如果访问报错-通过sonar日志定位问题
- 七、修改密码
- 八、汉化(看个人选择)
- 九、扫描
- 十、我遇到的Sonar报错以及解决办法
- 总结
前言
这是2024新版SonarQube+JenKins+Github联动代码扫描专题的第二部分,也是核心内容,SonarQube目前是半开源,可以自定义漏洞扫描规则,这个后面有时间可以出一篇教程,本文主要是讲2024最新版的配置和如何进行代码扫描。
提示:以下是本篇文章正文内容,下面案例可供参考
一、docker方式安装sonar
经过实践,最方便的还是docker安装,简单又快捷,可以节省很多时间。依次输入两条命令:
docker pull postgres:latest
docker pull sonarqube
二、启动容器
docker run --name db -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
三、创建数据库
进入容器命令:
docker exec -it db /bin/bash
进入postgres命令行:
psql -U sonar
创建sonar数据库:
create database sonar;
给sonar授权:
alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;
更改sonar数据库拥有者(这一步是必须的,否则会sonarqube会连接失败):
alter database sonar owner to sonar;
退出postgres命令行:
\p
退出docker进入linux命令行:
exit
一套操作下来,就完成安装了。这都是踩过很多坑才总结出来0报错,又快又简单的方法,我很惨的🐶。
四、启动sonarqube
docker run --name sq -e sonar.jdbc.password=sonar -e sonar.jdbc.username=sonar -e sonar.jdbc.url=jdbc:postgresql://postgres/sonar --link db:postgres -p 9000:9000 -d sonarqube
五、访问sonar
启动成功后登录ip:9000端口就可以访问了 默认账号密码:admin
六、如果访问报错-通过sonar日志定位问题
docker logs -f -t --tail==100 容器ID
七、修改密码
八、汉化(看个人选择)
插件市场搜索chinese,然后下载即可。
然后sonar会弹出重启服务的按钮,点击就行。刷新后就会变成中文版。
九、扫描
新建项目,显示名可以随意填写,能够清晰理解即可:
点击下一步->使用全局设置->创建projects:
选择本地后,创建令牌,然后选择Maven或者其他,我选择的是Maven的:
有一个执行SonarQube扫描的命令,直接进入到项目的根目录,用这条命令运行即可,如果不加sudo可能会报错,所以建议大家加上sudo:
sudo mvn clean verify sonar:sonar
-Dsonar.projectKey=zangccJavaDemo
-Dsonar.projectName=‘zangccJavaDemo’
-Dsonar.host.url=
-Dsonar.token=
记得在运行上面命令之前,切换好当前的jdk版本,根据项目的jdk来决定:
切换好jdk之后,再运行扫描命令即可:
命令运行成功会显示BUILD SUCCESS,否则运行失败。Sonarqube的主界面会自动刷新,显示扫描的结果:
十、我遇到的Sonar报错以及解决办法
问题1:[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin::sonar (default-cli) on project cmdb-nettopo-ftp-c1bb-connector: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin::sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin::sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
解决办法:
mvn命令前添加sudo即可解决,还有就是记得对应好当前命令终端的jdk版本。
问题2:报错“maven 打包 不再支持源选项 5。请使用 7 或更高版本”。
解决办法:这是由于没有指定java的版本造成的。我们可以在pom.xml中添加如下的属性。
<properties>
<!-- 这里的{jdk_version}填入你的jdk版本,我使用的是openjkd14 -->
<maven.compiler.target>{jdk_version}</maven.compiler.target>
<maven.compiler.source>{jdk_version}</maven.compiler.source>
</properties>
也可以在原本pom.xml文件中修改java.version:
问题3:报错Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2
解决办法:是因为 maven-war-plugin:2.2这个插件版本太低导致将项目打成war包失败了,然后在pom.xml文件中引入更新版本的插件项目就能正常安装了。到此问题解决。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
</plugin>
总结
JenKins安装与配置是SonarQube+JenKins+Github联动代码扫描的第二步。完整内容为:
2024新版SonarQube+JenKins+Github联动代码扫描(1)-JenKins安装与配置.
2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描.
2024新版SonarQube+JenKins+Github联动代码扫描(3)-三者联动配置最终章.
欢迎大家关注EureKaSec,无论是技术交流还是有兴趣加入我们团队,都欢迎随时联络沟通。
文章原创,欢迎转载,请注明文章出处: 2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。