目的

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

jenkins插件

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

  • Generic Webhook Trigger
  • SonarQube Scanner

准备工作

  1. sonar生成令牌

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

    • 生成令牌并复制保存

  2. 将令牌添加到jenkins凭证中 “系统管理 > 管理凭证 > 添加凭证”

    • 类型选择Secret text

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

  3. jenkins添加SonarQube Server “系统管理 > 系统配置 > SonarQube servers”

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

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

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

创建jenkins job

  1. 新建job,选择流水线

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

    • 复制http://JENKINS_URL/generic-webhook-trigger/invoke备用,作为触发地址(JENKINS_URL需替换成自己的jenkins地址)
    • Post content parameters提取需要用的参数
    • github如下
    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: '343aa12a-92a3-4797-a9ea-a8facb4db380', 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后)

验证

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

webhook触发jenkins进行sonar检测的更多相关文章

  1. gitlab实现webhook触发jenkins 自动,构建,测试,push webhook构子 总结

    最新一直在学习 工作 + 学习 去掉 90%   所以blog  一直没更 真是很不好!  exsi ceph gitlab jenkins harbor k8s  docker-compose ap ...

  2. gitlib配置push后自动触发jenkins构建sonar扫描

    jenkins所用到的插件: Gitlab Hook Plugin 配置步骤 1.先进入gitlab的个人设置,生成api token 2.复制生成的访问令牌,打开jenkins的凭据,添加选择类型是 ...

  3. 通过gitlab的webhook触发Jenkins自动构建设置

    1.Jenkins job中勾选Build when a change is pushed to GitLab 2.Gitlab project 页面setting选择Integrations,配置w ...

  4. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  5. 利用GitLab webhook来实现触发Jenkins自动操作

    本文针对如何设置GitLab以及Jenkins,实现每次GitLab上有提交事件的时候,都能触发Jenkins执行相应的操作,主要分为以下几个步骤: 1.新建GitLab测试用例 进入个人GitLab ...

  6. Jenkins集成Sonar Quabe和权限配置

    目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...

  7. 配置GitLab Push 自动触发Jenkins构建

    配置GitLab Push 自动触发Jenkins构建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客是对之前的笔记:https://www.cnblogs.com/yin ...

  8. jenkins集成sonar

    用于我的sonar已经在一台机器上搭建好了,但是每次都要人工去执行sonar-run,很麻烦,所以就想着集成到jenkins上,在jenkins上点点按钮就可以看sonar结果,所以很抱歉,本博客不设 ...

  9. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

随机推荐

  1. DRF框架在嵌套关系下实现嵌套对象字段的过滤

    当需要对关联对象的字段进行选择性显示时,在所对应的serializer类中声明引用的字段. 例如: class TrackSerializer(serializers.ModelSerializer) ...

  2. [ unittest ] 使用初体验

    import unittest from cal import Calculate class Mytest(unittest.TestCase): def setUp(self): self.cal ...

  3. 学习Java爬虫文档的学习顺序整理

    1.认识正则表达式(Java语言基础) https://www.toutiao.com/i6796233686455943693/ 2.正则表达式学习之简单手机号和邮箱练习 https://www.t ...

  4. nuxt中报window is not defined

    1.如果是引用插件报错的话,原因是在服务端渲染时找不到window,这样在插件引入位置把ssr设置为false即可. plugins: [ { src: '@/plugins/iview', ssr: ...

  5. Apache Shiro反序列化远程代码执行复现

    最近也是看shiro漏洞比较多,所以自己也在本地复现了一下,拿出来与大家一起分享 0x00 关于Apache Shiro Apache shiro是一个Java安全框架,提供了认证.授权.加密和会话管 ...

  6. 记一次 .NET 某消防物联网 后台服务 内存泄漏分析

    一:背景 1. 讲故事 去年十月份有位朋友从微信找到我,说他的程序内存要炸掉了...截图如下: 时间有点久,图片都被清理了,不过有点讽刺的是,自己的程序本身就是做监控的,结果自己出了问题,太尴尬了 二 ...

  7. TensorRT 开始

    TensorRT 是 NVIDIA 自家的高性能推理库,其 Getting Started 列出了各资料入口,如下: 本文基于当前的 TensorRT 8.2 版本,将一步步介绍从安装,直到加速推理自 ...

  8. 洛谷 CF196A 题解

    题目传送门 题目描述: 读入字符串,求该串的最大字典序子序列. 我的思路: 循环判断只要当前字符比后面所有的字符的字典序大,就把这个字符存到另一个字符串中,最后和输入的字符串循环比较如果该字符和输入时 ...

  9. 《剑指offer》面试题32 - II. 从上到下打印二叉树 II

    问题描述 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 ...

  10. EF中使用事务

    using (var db = new dbEntities()) { //第一个坑,需要手动open db.Database.Connection.Open(); using (var tran = ...