需求:jenkins在进行项目发布之前,需要对代码进行扫描(主要是代码存在Bugs或是Vulnerabilities需要解决后才能上线),如果扫描不通过,及放弃当前Job;反之执行通过后即执行jar包上传并启停服务。
1、Jenkins安装Sonar Quality Gates Plugin和SonarQube Scanner for Jenkins两个插件
2、Jenkins配置:系统管理->系统设置->SonarQube servers
Name:配置的名字,随便取名字。
Server URL:SonarQube服务端地址。
3、添加项目,在pipeline中添加代码。
stage('代码扫描'){
steps {
echo "starting codeAnalyze with SonarQube......"
withSonarQubeEnv('sonar') {
//注意这里withSonarQubeEnv()中的参数要与之前SonarQube servers中Name的配置相同
sh "${tools} sonar:sonar -Dsonar.projectKey=test -Dsonar.host.url=http://10.0.0.100:9000 -Dsonar.login=e4deff36e03209d8d36749f047c8061de41c6c5c"
}
script {
timeout(5) {
//这里设置超时时间5分钟,不会出现一直卡在检查状态
//利用sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
def qg = waitForQualityGate('sonar')
//注意:这里waitForQualityGate()中的参数也要与之前SonarQube servers中Name的配置相同
if (qg.status != 'OK') {
error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
}
}
}
}
}
这样发版后,就会先编译,然后扫描代码,扫描后会上传数据到SonarQube进行报告分析,根据SonarQube服务端配置的规则来判断后续是否发版或是中止pipeline的操作
转载请注明:IT运维空间 » linux » Jenkins配合SonarQube进行代码扫描
发表评论