webhook触发jenkins进行sonar检测
2024-10-03 04:47:03
目的
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平台也可看到相关报告
最新文章
- php-into 安装时遇到的各种问题,php -m跟phpinfo()显示不一致
- android-23 View.java - dispatchTouchEvent源码
- css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
- 用vs2013编译lua源码方法(一)
- Android--Matrix图片变换处理
- gulp之css,js压缩合并加密替换
- cookie操作大全
- form表单target的用法,实现无刷新提交页面
- 用户体验 | 寻找成套的 App SDK 服务
- [mysql]ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 解决方法
- 新的blog站地址
- 分布式文件系统 / MQ / 鉴权(轮廓)
- 浏览器关闭、刷新、关闭标签事件,兼容IE8,chrome,firefox
- 10、Dockerfile实战-PHP
- 修改linux的时间可以使用date指令
- struts2:多模块多配置文件开发
- 编写第一个微信小程序界面
- (转)学习linux的几本书
- 掉电脉冲映射串口log和dmesg到文件中的log
- 作业列表 of《软件测试技术》
热门文章
- linux(CentOS7) 之 克隆虚拟机并配置网络(固定ip)
- PowerShell【Do While、Do Until篇】
- SQL高级优化(二)之MySQL架构
- 5大最新云原生镜像构建工具全解析,3个来自Google,你了解几个?
- Texture+PBR两种工作流程
- leetcode 55. 跳跃游戏 及 45. 跳跃游戏 II
- Choregraphe 2.8.6.23动作失效
- 集合框架-工具类-Collections-逆序替换
- 集合框架-Map集合特点及常用方法
- kubernetes集群各模块功能描述