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会进行自动构建 ...
随机推荐
- mysql数据库存放的路径以及安装路径
mysql数据库存放的路径以及安装路径 1.查看mysql的存放路径 1.查看数据库的存放路径 进入mysql终端 mysql>show variables like '%datadir%'; ...
- js 模块化 -- 基本的导出与引入class模块
1.目录结构 2.类语法与导出 class food { } //定义常量 let c = "苹果"; //正确的函数写法 food.prototype.getfood = fun ...
- 基于Apache Hudi + Flink的亿级数据入湖实践
本次分享分为5个部分介绍Apache Hudi的应用与实践 实时数据落地需求演进 基于Spark+Hudi的实时数据落地应用实践 基于Flink自定义实时数据落地实践 基于Flink+Hudi的应用实 ...
- Antd使用timePicker封装时间范围选择器(React hook版)
antd中提供了是日期范围选择器及datepaicker封装日期范围选择器的示例,但是没有时间选择范围的组件,这里使用两个timePicker组合一个事件范围选择器,通过disabled属性限定时间可 ...
- test_5 排序‘+’、‘-’
题目是:有一组"+"和"-"符号,要求将"+"排到左边,"-"排到右边,写出具体的实现方法. 方法一: l=['-', ...
- docker的安装以及使用命令
docker的安装 安装docker https://docs.docker.com/install/linux/docker-ce/centos/#set-up-the-repository 从 2 ...
- 【爬虫】从零开始使用 Scrapy
一. 概述 最近有一个爬虫相关的需求,需要使用 scrapy 框架来爬取数据,所以学习了一下这个非常强大的爬虫框架,这里将自己的学习过程记录下来,希望对有同样需求的小伙伴提供一些帮助. 本文主要从下面 ...
- git和命令行 配置proxy请求
GIT中的操作 设置全局代理 git config --global http.proxy socks5://127.0.0.1:8088 git config --global http.proxy ...
- 【Java常用类】Calendar
Calendar日历类 实例化 方法一 创建其子类**(GregorianCalendar)**的对象 方法二 调用其静态方法getInstance() Calendar instance = Cal ...
- Android一句话 | ViewGroup事件分发
ViewGroup中可重写的关于事件分发的事件有dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent和requestDisallowInterce ...