首页 > 其他分享 >十、Jenkins流水线集成Sonar

十、Jenkins流水线集成Sonar

时间:2023-05-26 22:45:29浏览次数:36  
标签:false SonarQube test 流水线 Sonar Jenkins my stage

Jenkins安装在阿里云主机上,SonarQube安装在腾讯云主机上。所使用的地址都是外网ip。

一、Jenkins配置Sonar

安装SonarQube Scanner for Jenkins插件:
 

 
我这里已经安装了。

 

配置SonarQube Server,在系统管理 -> Configure System中:
 

 
注意:这里的SonarQube的凭据选择Secret text。还有一点就是SonarQube的Server URL不能以/结尾。否则跑流水线会报jenkins hudson.remoting.ProxyException: net.sf.json.JSONException: Invalid JSON String。Secret并从SonarQube中生成:
 

 

 

在SonarQube配置sonarqube-webhook:
 

 

 
名称随便取,URL:<your Jenkins instance>/sonarqube-webhook/。末尾的/是必须的。如果未配置sonarqube-webhook则会卡在下面流水线的Quality Gate

二、修改Jenkinsfile

pipeline {
    agent any
    tools {
          maven 'my_maven'
    }

    stages {
        stage('Build') {
                steps {
                    sh 'mvn -B -DskipTests clean package'
                }
            }

        stage("SonarQube analysis") {
            steps{
              echo 'SonarQube analysis 开始'
                withSonarQubeEnv('my_sonarqube') {
                   sh 'mvn  verify sonar:sonar'
              echo 'SonarQube analysis 结束'
                }

            }
        }

         stage("Quality Gate"){
                    steps{
                        timeout(time: 15, unit: 'MINUTES') {
                            waitForQualityGate abortPipeline: true
                        }
                    }
         }

        stage("Deploy") {
            steps {
                    sshPublisher(publishers: [sshPublisherDesc(configName: 'my_server0', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
                           cd /data
                           sudo docker stop my_test || true
                           sudo docker rm my_test || true
                           sudo docker rmi my_test || true
                           sudo docker build -t my_test  .
                           sudo docker run -d --name my_test -p 8500:8500 --privileged=true my_test:latest''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/data', remoteDirectorySDF: false, removePrefix: 'target/', sourceFiles: 'target/my-test-0.0.1-SNAPSHOT.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])

            }
        }
    }
}

增加了SonarQube analysisQuality Gate两个stage。SonarQube analysis里面的withSonarQubeEnv命令里面的my_sonarqube是Jenkins中配置系统 -> Configure System中的 SonarQube servers的NameQuality Gate是Sonar的质量门禁,如果未通过质量门禁则中断流水线,设置了15分钟的超时时间。

 

运行流水线:
 

 

并且可以查看每个stage的日志。

 
 
 
 
 

参考:https://blog.csdn.net/jiatong151/article/details/111995890
参考:https://www.jenkins.io/doc/pipeline/steps/sonar/

标签:false,SonarQube,test,流水线,Sonar,Jenkins,my,stage
From: https://www.cnblogs.com/shigongp/p/17435930.html

相关文章

  • docker 快速部署 Jenkins
    version:'3'services:jenkins:image:jenkins/jenkinscontainer_name:myjenkinsrestart:alwayshostname:myjenkins_hostports:-18181:8080#界面端口-18182:50000#apivolumes:-./jenkins_mount:/var......
  • Jenkins(1)-安装教程
    我用的服务器是阿里云服务器,服务器系统: CentOS7.9,不同的操作系统需要下载不同的软件包,对应的链接如下https://www.jenkins.io/zh/download/ 1)软件安装根据官网https://pkg.jenkins.io/redhat-stable/执行以下命令  安装成功截图 2)开启服务执行命令sys......
  • jenkins--构建传输jar包后启动java服务
    jenkins--构建传输jar包后启动java服务目标:针对单体java服务前置条件:jdk1.8日志切割cronologjdk1.8安装cronolog安装创建server.sh脚本文件#!/bin/bashJAR_PATH="/data/forwarder"#文件目录JAR_FILE="ruoyi-admin.jar"#文件名LOG_PATH="/data/forwarder/logs"#cro......
  • Jenkins初步安装
    Jenkins初步安装一、安装Git安装yum命令安装:yuminstall-ygit安装结果验证:git--versionNode安装(非必须)wget https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz二、解压安装下载完成后进行解压:tar-x--xz-fnode-v12.19.0-linux-x64.tar.xz#解压......
  • k8s部署sonarqube
    安装PGSqlapiVersion:apps/v1kind:Deploymentmetadata:name:postgres-sonarlabels:app:postgres-sonarspec:replicas:1selector:matchLabels:app:postgres-sonartemplate:metadata:labels:app:postgres-sonar......
  • Jenkins 自定义变量
    方法一、在构建步骤中,用Windows命令设置变量,然后写入到一份文档,给其他task调用 方法二、在构建环境里,“Injectenvironmentvariablestothebuildprocess”读取或直接定义变量。读取的话可以读取上一个方法输出的变量文件 方法三、在系统配置,设置的变量属于全局变量......
  • Jenkins
    官网:https://www.jenkins.io/Jenkins是一个开源的、用于构建和部署软件项目的自动化工具。它是一个基于Java开发的持续集成(ContinuousIntegration)工具,能够自动化地执行软件构建、测试和部署等任务。Jenkins的主要目标是提供一个易于使用、可扩展和灵活的自动化平台,以帮助开发......
  • 八、流水线语法之Directives
    一、environmentenvironment指令指定了一系列键值对,这些键值对将被定义为所有步骤或阶段特定步骤的环境变量,具体取决于环境指令在管道中的位置。该指令支持一个特殊的助手方法credentials(),该方法可用于通过Jenkins环境中的标识符访问预定义的credentials。支持的凭据类型Secret......
  • Jenkins
    部署Jenkins开启一台虚拟机,192.168.2.21.安装JDK和Maven#添加hosts解析文件[root@jenkins~]#cat<<END>>/etc/hosts192.168.2.1gitlab.lemon.com192.168.2.2jenkins.lemon.com192.168.2.3lb.lemon.comEND[root@jenkins~]#tarxfjdk-8u181-linux-x64.tar.......
  • 以Docker方式启动SonarQube
    以Docker方式启动SonarQube拉取镜像dockerpullpostgres:13dockerpullsonarqube:8.9-community运行容器启动postgresdockerrun\-d\--namepostgres\-p5432:5432\-ePOSTGRES_USER=sonar\-ePOSTGRES_PASSWORD=sonar\postgres:13启动SonarQ......