king

Jenkins配合SonarQube进行代码扫描

king linux 2023-01-25 541浏览 0

需求: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的操作

继续浏览有关 LINUX技术 的文章
发表评论