Back

ci - jenkins - 对代码进行审计 audit code using sonarcube

发布时间: 2023-06-05 03:00:00

refer to:

https://www.jenkins.io/doc/pipeline/steps/sonar/

https://plugins.jenkins.io/sonar/

(本文用到的maven项目的地址: https://github.com/yates0x00/test_jenkins_sonarqube_maven )

jenkins官方文档直接让我们去看sonar官方文档:

可以看到,这里针对不同的语言,有不同的选项 / plugin:

直接忽略下图红框的链接,

进入到jenkins -> 系统管理 -> plugin管理 -> available plugins:

安装之:

dashboard -> 系统管理 -> system 才能看到:

需要安装sonar cube server.

太神奇了。这里又打了一遍。。。已经2次丢失内容了。

内容略,记得用JDK17 安装即可。

使用 ubuntu的alternative就可以自由切换。

update-java-alternatives --list

sudo update-java-alternatives --set /usr/lib/jvm/java-1.17.0-openjdk-amd64

然后记录好该 JDK 的HOME:

jenkins中设置好该JDK:

然后在对应的jenkins项目中,就可以配置sonarqube了,指定好对应的JDK17:

然后就可以看到 在jenkins项目下,sonarqube的图标出来了。

然后点击一下 build 试试:

上图报错了,说明 可以走到sonarqube 审计代码这一步了。只是由于sonarqube没有启动,所以这里报错了。 不要紧

手动启动sonarqube:

再来一次,又失败了,如下图:

分析了下,可以看到网页,JDK版本没错,所以说明jenkins + sonarqube都分别跑起来了。

直接访问 9000端口(sonar web页面)可以看到 项目都有了。

联想到jenkins 只能看到login之前的loading, 估计是没有权限。回头查一下文档,原来是需要 user key

所以这样的设置:(如下图)

得到了这个key:

然后,我们copy该key, 进入到jenkins中进行设置,如下图:

全局配置中,找到这个sonarqube servers:

点击这个“添加”,会出现下面2个图片的弹窗(实际上是一个大弹窗)

添加好后,再回到 刚才的下拉单,就可以看到了:

保存后,再运行:

发现又报错了:

查看文档,文档中没写,查看jenkins, 发现了这个form, 需要填写:

又报错了?

继续修改配置:

参考:
https://stackoverflow.com/questions/46976567/please-provide-compiled-classes-of-your-project-with-sonar-java-binaries

也就是,填写成这样:

https://stackoverflow.com/a/63930274/445908

sonar.projectKey=my:testwithjenkinsandsonar
sonar.projectName=Test Jenkins With Sonar
sonar.projectVersion=1.0
sonar.sources=src/main/java
sonar.exclusions=target/classes

终于可以运行了:

点击可以查看报告:

http://54.178.99.67:9000/dashboard?id=my%3Atestwithjenkinsandsonar

这里可以查看API形式的报告,方便整理:(邮件,报警啥的)

http://54.178.xx99.67:9000/api/ce/task?id=AYiK9TwuIm-UnC0p2Pa8

对应的java项目看起来是这样::

我们把代码修改一下,弄的危险一些:

可以看到,jenkins还是会正常的成功构建的:

我们进入到sonarqube的web GUI:

Back