webhook触发jenkins进行sonar检测
目的
jenkins仅需创建一个job,git推送后自动进行sonar代码检测并上传到sonarqube
jenkins插件
已按社区推荐安装基本插件
- Generic Webhook Trigger
- SonarQube Scanner
准备工作
sonar生成令牌
登录后右上角点击"头像 > 我的账号 > 安全"
生成令牌并复制保存

将令牌添加到jenkins凭证中 “系统管理 > 管理凭证 > 添加凭证”
类型选择Secret text
令牌粘贴到Secret框中,ID及描述可自行设置成想要的

jenkins添加SonarQube Server “系统管理 > 系统配置 > SonarQube servers”
定义name及sonarqube地址,选中刚创建的凭证,点击保存(这里name我命名‘SonarQube’)

jenkins添加Sonar Scanner “系统管理 > 全局工具配置 > SonarQube Scanner”
定义name,勾选自动安装,版本选最新即可,点击保存

创建jenkins job
新建job,选择流水线
“构建触发器”选中"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)
定义流水线
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为例)
打开项目"Settings > Webhooks"
写入url及创建job第二步的token(注意token在url后)

验证
- 触发push事件后,可看到jenkins开始构建,完成后sonarqube平台也可看到相关报告
webhook触发jenkins进行sonar检测的更多相关文章
- gitlab实现webhook触发jenkins 自动,构建,测试,push webhook构子 总结
最新一直在学习 工作 + 学习 去掉 90% 所以blog 一直没更 真是很不好! exsi ceph gitlab jenkins harbor k8s docker-compose ap ...
- gitlib配置push后自动触发jenkins构建sonar扫描
jenkins所用到的插件: Gitlab Hook Plugin 配置步骤 1.先进入gitlab的个人设置,生成api token 2.复制生成的访问令牌,打开jenkins的凭据,添加选择类型是 ...
- 通过gitlab的webhook触发Jenkins自动构建设置
1.Jenkins job中勾选Build when a change is pushed to GitLab 2.Gitlab project 页面setting选择Integrations,配置w ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
- 利用GitLab webhook来实现触发Jenkins自动操作
本文针对如何设置GitLab以及Jenkins,实现每次GitLab上有提交事件的时候,都能触发Jenkins执行相应的操作,主要分为以下几个步骤: 1.新建GitLab测试用例 进入个人GitLab ...
- Jenkins集成Sonar Quabe和权限配置
目录 安装Sonar Jenkins配置sonar Maven Jenkins Job配置 Pipeline Jenkins Job配置 Sonar权限管理 Sonar quality Gate通过阈 ...
- 配置GitLab Push 自动触发Jenkins构建
配置GitLab Push 自动触发Jenkins构建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客是对之前的笔记:https://www.cnblogs.com/yin ...
- jenkins集成sonar
用于我的sonar已经在一台机器上搭建好了,但是每次都要人工去执行sonar-run,很麻烦,所以就想着集成到jenkins上,在jenkins上点点按钮就可以看sonar结果,所以很抱歉,本博客不设 ...
- 实战:向GitHub提交代码时触发Jenkins自动构建
当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...
随机推荐
- 微信小程序组建通信
子组件传递父组件需要用到triggerEvent方法,当子组件(自定义组件)点击button的时候调用triggerEvent方法传递一些数据,首先第一个属性为自定义名称(myevent)对应父组件( ...
- for循环题目记录
1.求1000以内的完数 /** * 一个数如果恰好等于它的因子之和,这个数就是完数,找出1000内的所有完数 * @author 努力Coding * @version * @data */ pub ...
- 【洛谷】P1067 多项式输出
原题链接:P1067 多项式输出 题目分析:学长推荐的OJ网站 --洛谷,发现挺好用的还可以下载提交出错的数据. 废话就不多说了,这道题属于基础题.提交出错主要是因为一些小细节不到位,这里就不一一赘述 ...
- HDU-2032.杨辉三角(C语言描述)
Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 ...
- 网络协议学习笔记(八)DNS协议和HttpDNS协议
概述 上一篇主要讲解了流媒体协议和p2p协议,现在我给大家讲解一下关于DNS和HttpDNS的相关知识. DNS协议:网络世界的地址簿 在网络世界,也是这样的.你肯定记得住网站的名称,但是很难记住网站 ...
- Keil MDK STM32系列(八) STM32F4基于HAL的PWM和定时器输出音频
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- R语言:关于rJava包的安装
R语言:关于rJava包的安装 盐池里的萝卜 2014-09-14 00:53:33 在做文本挖掘的时候,会发现分词时候rJava是必须要迈过去的坎儿,所以进行了总结: 第一步:安装rJava和jd ...
- HTML+CSS+Javascript实现轮播图效果
HTML+CSS+Javascript实现轮播图效果 注意:根据自己图片大小来更改轮播图大小. <!doctype html> <html> <head> < ...
- elasticsearch源码分析及插件开发
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- Flink State Rescale性能优化
背景 今天我们来聊一聊flink中状态rescale的性能优化.我们知道flink是一个支持带状态计算的引擎,其中的状态分为了operator state和 keyed state两类.简而言之ope ...