美文网首页
webhook触发jenkins进行sonar检测

webhook触发jenkins进行sonar检测

作者: aiChenK | 来源:发表于2022-02-14 18:02 被阅读0次

    目的

    jenkins仅需创建一个job,git推送后自动进行sonar代码检测并上传到sonarqube

    jenkins插件

    已按社区推荐安装基本插件

    • Generic Webhook Trigger
    • SonarQube Scanner

    准备工作

    1. sonar生成令牌

      • 登录后右上角点击"头像 > 我的账号 > 安全"

      • 生成令牌并复制保存

        WX20220217-094227@2x.png
    1. 将令牌添加到jenkins凭证中 “系统管理 > 管理凭证 > 添加凭证”

      • 类型选择Secret text

      • 令牌粘贴到Secret框中,ID及描述可自行设置成想要的

        1972934-20220214174527032-2068756174.png
    1. jenkins添加SonarQube Server “系统管理 > 系统配置 > SonarQube servers”

      • 定义name及sonarqube地址,选中刚创建的凭证,点击保存(这里name我命名‘SonarQube’)

        image.png
    1. jenkins添加Sonar Scanner “系统管理 > 全局工具配置 > SonarQube Scanner”

      • 定义name,勾选自动安装,版本选最新即可,点击保存

        1972934-20220214174632320-638197739.png

    创建jenkins job

    1. 新建job,选择流水线

    2. “构建触发器”选中"Generic Webhook Trigger"

      variable expression expressionType defaultValue regexpFilter
      project_name $.repository.name JSONPath
      ssh_url $.repository.ssh_url JSONPath
      ref $.ref JSONPath
      • gitlab如下
      variable expression expressionType defaultValue regexpFilter
      project_name $.project.name JSONPath
      ssh_url $.project.git_ssh_url JSONPath
      ref $.ref JSONPath
      • 定义Token,不同token可触发不同job(若token相同则触发多个job)
    3. 定义流水线

      pipeline {
          agent any
      
          stages {
              stage('Check Out!') {
                  steps {
                      script {
                          //解析分支
                          arr = "${env.ref}".split("refs/heads/") as List
                          currentBranch = arr[1]
                      }
                      git branch: currentBranch, credentialsId: 'xxxxxxxxxxx', url: '${ssh_url}' //credentialsId为ssh私钥,用于拉git代码
                  }
              }
              
              stage('Sonar Scan!') {
                  steps {
                      script {
                          sonarqubeScannerHome = tool name: 'SonarQube Scanner'  //准备工作第4步的name
                          withSonarQubeEnv('SonarQube') {    //准备工作第3步的name,只有一个时可省略
                               sh """
                                   ${sonarqubeScannerHome}/bin/sonar-scanner \
                                      -Dsonar.projectKey=${project_name} \
                                      -Dsonar.projectName=${project_name} \
                                      -Dsonar.sources=./
                               """
                          }
                      }
                  }
              }
             
          }
      }
      

    定义webhook(github为例)

    1. 打开项目"Settings > Webhooks"

    2. 写入url及创建job第二步的token(注意token在url后)

      image.png

    验证

    • 触发push事件后,可看到jenkins开始构建,完成后sonarqube平台也可看到相关报告

    相关文章

      网友评论

          本文标题:webhook触发jenkins进行sonar检测

          本文链接:https://www.haomeiwen.com/subject/nwhhlrtx.html