SonarQube+jenkins(四):Jenkins+pipeline+sonarQube分析项目

前提jenkins中已经配好sonarqube和下载sonar-Scanner插件
在这里插入图片描述
在这里插入图片描述

一、pipeline运行Maven项目

1.新建pipeline项目
在这里插入图片描述

2.生成SVN/GIT代码检出路径
拉取代码语法生成:
在这里插入图片描述
在这里插入图片描述
填写url
在这里插入图片描述
直接复制即可

3.填写脚本:

pipeline{
    
    
    agent any
     parameters {
    
    
        choice(name: 'Action', choices: ['deploy', 'test'], description: '操作说明:(1)deploy表示对选择的指定服务进行更新  (2)test表示对选择的指定服务进行功能测试')
     }
    stages{
    
    
    stage('拉取代码'){
    
    
        steps{
    
    
            //可以在流水线语法中生成
        }
             }
     stage('确认操作') {
    
    
            steps{
    
    
               echo "confirm"
                }
            input{
    
    
            //这里是一个弹框,在构建时会弹出
                message  "确定操作为:${params.Action}?"
                ok "确定"
                submitter "admin,anthony"
                }
                    }
     stage('sonarQube分析'){
    
    
          steps{
    
    
          //注意,这里是你在jenkins中配置的sonarqube servers的名字
               withSonarQubeEnv('sonarScanner') {
    
    
                sh 'mvn sonar:sonar'
            }
         script {
    
    
            timeout(1) {
    
    
            //这里设置超时时间1分钟,不会出现一直卡在检查状态
            //利用sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
                def qg = waitForQualityGate('sonar')
                if (qg.status != 'OK') {
    
    
                    error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
                }
            }
        }
          }
     }
     stage('构建代码'){
    
    
            steps{
    
    
                  script {
    
    
                    if ("${params.Action}" == 'test') {
    
    
                        echo "测试"
                        sh "mvn install sonar:sonar"
                    }else if ("${params.Action}" == 'deploy') {
    
    
                        echo '发布'
                        sh "mvn install sonar:sonar"
                        //具体发布代码根据需求来
                     }
                }
            }
                 
     }
    }
    }

4.最后Bulid
在这里插入图片描述

二、pipeline运行前端项目

和Maven项目的1、2、4步一样,拉取代码之后确认、唯一不同的是sonar分析的脚本信息(前端js一般没特殊处理不需要构建即去掉上面mvn有关的shell命令,用sonar分析完打包发布执行需要的命令即可)
脚本:

  stage('sonarQube分析'){
    
    
    steps{
    
    
        script {
    
    
        //在jenkins中配置的SonarQue-Scanner的名字
                    scannerHome = tool 'SonarQube-Scanner'
                }
                //sonarQube-servers的名字
              withSonarQubeEnv('sonarScanner') {
    
    
              //我这个安装的sonarScanner在jenkins目录下,有点长,需要的自己生成一个软连接执行sonar-scanner
                  sh'/root/.jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQube-Scanner/bin/sonar-scanner -Dsonar.projectKey=项目名 -Dsonar.projectName=项目名 -Dsonar.language=js'
            }
  
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43909848/article/details/107638208
今日推荐