在Gradle中添加Dependency Check,以及在Sonar中查看报告

前言

在项目中需要引入dependency check的工具来扫描相关依赖的库是否有安全漏洞等问题。由于是使用Gradle作为依赖构建工具,以及kotlin作为开发语言,所以选择了owasp dependency checkGradle插件的方式。最后需要将报告上传到sonar进行展示。

工具

  • Gradle 6.4.1
  • org.owasp.dependencycheck
  • sonarqube

流程

引入依赖

build.gradle.kts中添加相关的依赖:

id("org.owasp.dependencycheck") version "5.3.2.1"
id("org.sonarqube") version "2.6.2"
添加Sonar配置项

sonar的配置项中添加dependency check报告的路径:

# dependency check reporting
systemProp.sonar.dependencyCheck.htmlReportPath=build/reports/dependency-check-report.html
添加Sonar的dependency check插件

sonar中选择Administration的tab,进入Marketplace。在Plugins中搜索并安装如图的插件:

Plugin
添加Jenkins Task

项目中使用了Jenkins作为CI构建工具,所以需要在其中添加一个stage用于将dependency check report上传到sonar中。如下:

stage('DEPENDENCY CHECK') {
    steps {
        script {
            def dependencyCheck = true
            try {
                timeout(time: 20, unit: 'SECONDS') {
                    input 'Dependency Check?'
                }
            } catch(e) {
                dependencyCheck = false
            }

            if (dependencyCheck){
                sh './gradlew dependencyCheckAnalyze'
            }
        }
    }
}

stage('SONAR ANALYSIS') {
    steps {
        script {
            sh './gradlew sonarqube -Dsonar.host.url=http://${HOST}:9000 -Dsonar.login=${SONAR_CREDS}'
        }
    }
}

由于dependency check并不是每次跑pipeline都需要,所以通过timeout+input的方式来手动run这一个stage。当跑完./gradlew dependencyCheckAnalyze后就会生成相关的report文档,默认是html格式,可以通过配置修改。

当dependency check跑完之后,就应该执行./gradlew sonarqube命令将本地report上传到sonarqube来分析。sonar的host.urllogin参数既可以配置在sonar对应的properties,也可以在run命令的时候传入。这里是因为将creds配置到了Jenkins中,所以在Jenkins file中通过获取凭证的方式来配置。

成果

当Jenkins CI跑完Sonar Analysis后,就可以去Sonar上查看对应的dependency check的report。如图

Jenkins
Sonar

你可能感兴趣的:(在Gradle中添加Dependency Check,以及在Sonar中查看报告)