Jenkins Pipeline+sonar构建质量平台

本文详细介绍了如何在Jenkins中集成SonarQube进行代码质量检查,包括SonarQube、sonar-scanner的安装配置,以及在Jenkins中配置SonarQube服务器和sonar-scanner的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:

  Jenkins

  JDK

目录:

1、安装sonar插件:SonarQube Scanner for Jenkins

2、安装SonarQube

3、安装sonar-scanner

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.安装sonar插件:SonarQube Scanner for Jenkins

  

2、安装SonarQube

  2.1 下载

    下载地址:https://www.sonarqube.org/downloads/

  2.2 解压

    下载后放在/usr/local目录下,并解压

unzip sonarqube-6.7.6.zip

  2.3 配置环境变量

vi /etc/profile

  里面写如下

#set sonarqube
export SONAR_HOME=/usr/local/sonarqube-6.7.6
PATH=$PATH:$SONAR_HOME/bin

  使配置生效

source /etc/profile

  2.4 启动并测试

    进入到启动目录

/usr/local/sonarqube-6.7.6/bin/linux-x86-64

    执行启动命令

./sonar.sh start

    启动时要查看es.log和sonar.log日志 

tail -f /usr/local/sonarqube-6.7.6/logs/es.log    
tail -f /usr/local/sonarqube-6.7.6/logs/sonar.log   

    用root启动会报错,请参考我的另一篇文章:https://www.cnblogs.com/gcgc/p/10239590.html

    所有问题解决完后启动,并测试,访问ip+port,OK了

    我这里是因为默认的9000端口被占用了,所以修改了默认端口 vi /usr/local/sonarqube-6.7.6/conf/sonar.properties

3、安装sonar-scanner

  3.1 下载

    https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

  3.2 解压

    下载后放在/usr/local目录下,并解压

unzip sonar-scanner-cli-3.2.0.1227-linux.zip

  3.3 配置环境变量

    和上面一样修改/etc/profile文件

#set sonarqube
export SONAR_HOME=/usr/local/sonarqube-6.7.6
export SONAR_SCANNER_HOME=/usr/local/sonar-scanner-3.2.0.1227-linux
PATH=$PATH:$SONAR_HOME/bin:$SONAR_SCANNER_HOME/bin

  3.4 测试

    进入/usr/local/sonar-scanner-3.2.0.1227-linux/bin执行:

./sonar-scanner -h

    如果出现如下就说明安装好了

[root@iZbp1bb2egi7w0ueys548qZ bin]# ./sonar-scanner -h
INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output

4、在Jenkins中配置sonar

  SonarScanner和SonarQube的关系类似于客户端与服务端,由于SonarScanner工具需要把扫描的代码及结果发送到SonarQube服务器上,所以需要配置SonarQube服务地址。

  在Jenkins系统配置>>系统设中配置如下:

  

5、在Jenkins中配置sonar-scanner

  在全局工具配置中配置如下:

  

 

 6、在项目根目录下新建sonar-project.properties文件

  内容如下

# must be unique in a given SonarQube instance
sonar.projectKey=cynomys:0.0.1
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=cynomys
sonar.projectVersion=0.0.1

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**

sonar.java.source=1.8
sonar.java.target=1.8

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
# 最新版本的sonarQube6.5只能扫描class文件,需要指定classes文件路径 sonar.java.binaries=/root/.jenkins/workspace/e-content/e-content-controller/target/classes

7、编写pipeline脚本

  

node {
    maven_home='/usr/local/apache-maven-3.5.4'

    stage('Pull Code'){
        
        git branch: 'master', credentialsId: 'gitlab_account', url: 'http://*****.git'
        
    }
    
   stage('Code Check') {
            echo "代码检查!"
         }
         
     stage('SonarQube analysis') { 
        // SonarQubeServer为系统配置的SonarQube servers的名称
        withSonarQubeEnv('SonarQubeServer') { 
          sh '/usr/local/sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner'
          
        }
    }

   stage('Unit Test') {
         echo "单元测试 !"
      }
     

   stage('Compile') {
        echo '编译开始'
        // 暂时打包报错
        sh "'$maven_home'/bin/mvn install"
   }

   stage('Build Images') {
        echo '敬请期待!'
      
    }

    stage('Backup'){
        echo '旧版本软件包已经备份'
    }
    
    stage('Delete Old war'){
        echo "删除老的包"
    }
    

    stage('Deploy'){
       echo '部署!'
       sh 'echo hello'
    //   sh 'scp /root/.jenkins/workspace/e-trade/e-trade-mapper/target/e-trade-mapper-1.0-SNAPSHOT.jar  root@10.132.131.51:/home/guchen_test'
     
    }

    stage('Integration Testing') {
          echo "敬请期待!"
       }

    stage('UI Automated Testing') {
          echo "敬请期待!"
       }

    stage('Send Testing Report') {
          echo "敬请期待!"
       }

}

 8、构建一下

  

 

转载于:https://www.cnblogs.com/gcgc/p/10240600.html

### Jenkins Gitee Pipeline 脚本编写自动化构建 #### 一、基础知识概述 Jenkins 是一种流行的持续集成工具,支持通过 Pipeline 实现复杂的自动化流程。Gitee(码云)作为国内常用的 Git 托管平台,可以与 Jenkins 集成来完成代码拉取、编译、测试和部署等一系列操作[^1]。 Groovy 是 Jenkins Pipeline 的主要脚本语言之一,在脚本式流水线中尤为重要。它允许开发者定义灵活的工作流逻辑并嵌入到 `script` 块中执行。 --- #### 二、环境准备 为了实现基于 Gitee 的自动化构建,需满足以下条件: - 安装配置好 Jenkins 并启用 Pipeline 插件。 - 在 Jenkins 上添加 Gitee 的 SSH 密钥以便访问私有仓库[^3]。 - 确保目标机器已安装 JDK 和 Maven/Gradle 工具链用于 Java 应用的构建[^4]。 --- #### 三、Pipeline 示例脚本 以下是针对 Gitee 项目的一个简单 Pipeline 脚本示例: ```groovy pipeline { agent any environment { GIT_URL = 'https://gitee.com/<your-repo-url>.git' // 替换为实际 Gitee 地址 BRANCH_NAME = 'main' } stages { stage('Checkout') { steps { script { git branch: "${BRANCH_NAME}", url: "${GIT_URL}" // 拉取指定分支代码 } } } stage('Build') { steps { sh 'mvn clean package -DskipTests=true' // 使用 Maven 进行打包,跳过测试阶段 } } stage('Test') { steps { sh 'mvn test' // 执行单元测试 } } stage('SonarQube Analysis') { steps { withCredentials([string(credentialsId: 'SONAR_TOKEN', variable: 'TOKEN')]) { sh ''' mvn sonar:sonar \ -Dsonar.projectKey=<project_key> \ -Dsonar.host.url=http://<sonarqube-server>:9000 \ -Dsonar.login=${TOKEN} ''' // 将分析结果上传至 SonarQube } } } stage('Deploy') { when { expression { params.DEPLOY == true } // 是否触发部署由参数决定 } steps { echo 'Starting deployment...' sh './deploy.sh' // 自定义部署脚本 } } } post { success { echo 'Pipeline completed successfully!' } failure { mail to: '<email>', subject: 'Pipeline Failed', body: 'Check the logs for details.' } } } ``` 上述脚本实现了从代码检出到最终部署的一系列过程,并引入了 SonarQube 来监控代码质量。 --- #### 四、注意事项 1. **SSH Key 设置** 如果使用的是私有仓库,则需要在 Jenkins 中配置对应的 SSH 私钥。 2. **路径调整** 若涉及远程同步或其他文件生成的操作,可能需要注意路径适配问题[^2]。 3. **动态参数控制** 可以利用 Jenkins 参数化构建功能让某些行为可选,比如是否自动发布版本。 --- #### 五、总结 此教程展示了如何借助 Groovy 编写的 Pipeline 脚本来连接 Gitee 平台并完成一系列 CI/CD 步骤。具体实施过程中还需根据实际情况调整相关配置项及命令语句。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值