前言
在项目中需要引入dependency check
的工具来扫描相关依赖的库是否有安全漏洞等问题。由于是使用Gradle作为依赖构建工具,以及kotlin作为开发语言,所以选择了owasp dependency check
的Gradle
插件的方式。最后需要将报告上传到sonar
进行展示。
工具
- Gradle 6.4.1
- org.owasp.dependencycheck
- sonarqube
流程
引入依赖
在build.gradle.kts
中添加相关的依赖:
1 | id("org.owasp.dependencycheck") version "5.3.2.1" |
添加Sonar配置项
在sonar
的配置项中添加dependency check
报告的路径:
1 | # dependency check reporting |
添加Sonar的dependency check插件
在sonar
中选择Administration的tab,进入Marketplace。在Plugins中搜索并安装如图的插件:
添加Jenkins Task
项目中使用了Jenkins
作为CI构建工具,所以需要在其中添加一个stage
用于将dependency check report
上传到sonar
中。如下:
1 | stage('DEPENDENCY CHECK') { |
由于dependency check
并不是每次跑pipeline都需要,所以通过timeout+input的方式来手动run这一个stage。当跑完./gradlew dependencyCheckAnalyze
后就会生成相关的report文档,默认是html格式,可以通过配置修改。
当dependency check跑完之后,就应该执行./gradlew sonarqube
命令将本地report上传到sonarqube来分析。sonar的host.url
和login
参数既可以配置在sonar对应的properties,也可以在run命令的时候传入。这里是因为将creds
配置到了Jenkins中,所以在Jenkins file中通过获取凭证的方式来配置。
成果
当Jenkins CI跑完Sonar Analysis后,就可以去Sonar上查看对应的dependency check的report。如图