目的

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. .NetCore下构建自己的服务配置中心-手动造轮子

    本人主要利用IdentityServer4以及SignalR来实现,IdentityServer4作为认证,SignalR来交互配置,这里一些代码可能就是部分提出来,主要介绍实现原理及方法 实现配置中 ...

  2. JAVA之内存结构

    概述 JAVA是我们现在最常用的开发语言,而他的垃圾回收机制(Garbage Collection)的重要作用不言而喻,以下简称GC,所以了解GC至关重要,现本人对于GC机制以前的理解和现在的理解记录 ...

  3. day 16 int *p; scanf("%d",p);问题

    (1).以下不能用于描述算法的是[A] (A).E-R图 (B).伪代码 (C).计算机语言 (D).流程图 分析:E-R图也称实体-联系图,提供了表示实体类型.属性和联系的方法,用来描述现实世界的概 ...

  4. dubbo 实现简易分布式服务

    dubbo 实现简易分布式服务 服务器需要搭建zookeeper环境 zookeeper端口2181 还需要有java环境 1.需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我 ...

  5. 【笔记】对golang的大量小对象的管理真的是无语了……

    业务中有这样一个struct: type bizData struct{ A uint64 B uint64 C int32 D uint32 } 虽然没有实测,但我猜测这样的对齐方式,这个struc ...

  6. 通过CVE-2021-43297漏洞在Apache Dubbo<=2.7.13下实现RCE

    目录 0 前言 1 找源头 1.1 找到触发点 1.2 可用的gadget 1.3 向上推触发点 2 构造poc 2.1 开启HttpServer 2.2 hessian2序列化过程简述 3 poc ...

  7. 阐述JDBC操作数据库的步骤

    1. 加载驱动. Class.forName("oracle.jdbc.driver.OracleDriver"); (注意:加载驱动在JDBC 4.0中是可以省略的,自动从类路径 ...

  8. HttpServletResponse接口详解

    在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自 ServletResponse 接口.HttpServletResponse 对象专门用来封装 HT ...

  9. 什么是VPC

    1 什么是私有网络(VPC) 私有网络是一块可用户自定义的网络空间,您可以在私有网络内部署云主机.负载均衡.数据库.Nosql快存储等云服务资源.您可自由划分网段.制定路由策略.私有网络可以配置公网网 ...

  10. 报错org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.mybatis.spring.SqlSessionFactoryBean]

    超级大坑 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.mybati ...