Jenkins集成Sonar Quabe和权限配置

安装Sonar
Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
这里使用docker安装sonar. 要求宿主机器安装了docker和docker-compose
docker-compose.yaml
version: "3"
services:
sonarqube:
image: sonarqube:7.7-community
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres:11-alpine
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql_data:
sonar的配置文件会挂载出来,目录类似/var/lib/docker/volumes/sonarqube_sonarqube_conf/_data.
修改sonar.properties,以添加自定义配置,比如sso,比如ldap
命令行执行启动
docker-compose up -d
浏览器访问localhost:9000
Jenkins配置sonar
安装sonar插件 SonarQube Scanner for Jenkins
然后
Jenkins 系统配置SonarQube servers
name: SonarQube

Jenkins 全局工具配置Sonar Scanner
name: SonarQube Scanner

Maven Jenkins Job配置
如果选择构建一个maven类型的Jenkins Job, 需要在构建后添加步骤执行sonar scan
添加post step, 需要指定sonar-project.properties配置文件

sonar-project.properties会指定项目的分组key。Sonar通过分组key前缀可以设置分组权限。比如
# must be unique in a given SonarQube instance
# 项目的唯一性id,使用分组标识做为前缀,比如项目属于部门my
sonar.projectKey=my:demo
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=my:demo
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
# 要扫描的模块位置,如果是根目录,就是.
sonar.sources=web-api
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
# 这里需要指定编译后jar所在目录
sonar.java.binaries=**/target/classes
然后,点击构建即可在sonar上看到结果。
Pipeline Jenkins Job配置
如果采用Pipeline作为Jenkins Job, 需要修改Jenkinsfile的步骤。
参考官方文档
添加两个stage
stage('SonarQube analysis') {
def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
withSonarQubeEnv('SonarQube') {
//这里project_module是模块所在路径,目的是指定配置文件
sh "${sonarqubeScannerHome}/bin/sonar-scanner -Dproject.settings=./${project_module}/sonar-project.properties"
}
}
// No need to occupy a node
stage("Quality Gate"){
//最多等待1min,如果扫描没通过,超时失败
timeout(time: 1, unit: 'MINUTES') { // Just in case something goes wrong, pipeline will be killed after a timeout
def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
由于等待sonar扫描结果需要回调webhook, 因此,需要在sonar配置Jenkins的webhook回调地址。
假设Jenkins地址为: http://jenkins.demo.com
打开sonar-administration-configuration-webhooks, 添加一个webhook
http://jenkins.demo.com/sonarqube-webhook/
这样扫描结果会通知Jenkins.
Sonar权限管理
Sonar设置权限有admin和普通用户以及分组和创建者。我们默认创建者和admin有所有权限,
接下来就是我们关注的分组权限。百度大部分文章都没提到,只是到sonar扫描就结果了。而一个代码质量检测平台肯定是给人用的,就必须设置权限问题。我们希望,不同部门的人只能看到部门自己的代码结果。所以代码必须和组进行关联。
集成ldap可以直接使用公司现有的组织架构,也可以手动添加group,然后group添加人。
接下来,如何绑定项目给指定group? 当然可以直接手动设置,但公司那么多项目,肯定需要配置化自动绑定。Sonar提供了permission template来实现这个功能。参见官网
use the "Create" button on Administration > Security >** Permission Templates**. It is possible to provide a Project key pattern.

这里有个问题,就是Project Key Pattern是正则表达式,所以,针对我们前面demo,这个内容应是
my.*
先要配置好permission template, 设置哪些组可以有哪些权限,比如设置组my可以访问所有my为前缀的项目。 然后进行代码扫描,生成的项目就会绑定这个模板对应的权限了。

Sonar quality Gate通过阈值设置
Sonar通过quality gate规则来决定扫描是否通过,指标有很多种,比如设定bug不能超过10个, 当扫描结果bug大于10就会失败。

Jenkins集成Sonar Quabe和权限配置的更多相关文章
- DEVOPS技术实践_11:Jenkins集成Sonar
前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...
- Jenkins 集成 Sonar
Jenkins 与 Sonar 集成:Sonar 是 Jenkins 之外独立运行的一个服务.Jenkins 中安装插件 SonarQube(并配置其 Sonar Server 的 URL / Acc ...
- jenkins集成sonar
用于我的sonar已经在一台机器上搭建好了,但是每次都要人工去执行sonar-run,很麻烦,所以就想着集成到jenkins上,在jenkins上点点按钮就可以看sonar结果,所以很抱歉,本博客不设 ...
- jenkins集成sonar代码审核工具
在项目测试管理过程中,项目上线很多时候时间仓促,导致代码质量不高,测试时间不充分会导致线上出现各种各样的问题,这个时候一方面是增加测试的质量把控,还要从根本上解决开发小哥的代码质量问题.而Sonar这 ...
- Jenkins 集成Sonar代码质量扫描
Jenkins上安装插件 在jenkins插件安装界面安装: 插件名 SonarQube Scanner for Jenkins Jenkins上配置 jenkins中操作:系统管理-系统设置,找到 ...
- Jenkins之Sonar 代码检查
一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...
- Jenkins集成SonarQube遇到的报错
Jenkins集成Sonar过程中遇到的报错 1.jenkins中无法添加sonarqube的token凭证 因为添加的凭证类型错误,所以无法添加token,类型应该选择"Secret te ...
- Jenkins+Maven+Sonar系统持续集成环境部署以及配置
一.Jenkins介绍以及安装 什么是持续集成? 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Ag ...
- ldap配置系列二:jenkins集成ldap
ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...
随机推荐
- Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)
Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...
- UML与设计模式
这个在大中华区不知道是否重视,反正我是接触的人中谈的少,除了想起大学有个博士级别的老师,给我们上课天天老拿着一本外文翻译的UML书外,可真要重视起来的. 加深一个单词,模式pattern,patter ...
- 【Web安全入门】三个技巧教你玩转XSS漏洞
XSS漏洞是Web应用程序中最常见的漏洞之一,想要入门Web安全的小伙伴,这个知识点是必学的. i春秋官网中有很多关于XSS漏洞的课程,新手小白可以去官网看课学习. 学习地址:https://www. ...
- 队列解密QQ号
队列解密QQ号 本篇博客主要是<啊哈!算法>的读书笔记,这里做一下记录. 问题场景: 给定一串 QQ 号,631758924,从其中解密出真实的 QQ 号. 解密规则:首先将第一个数删除, ...
- 用SignApk.jar对APK进行签名
对apk签名需要使用SignApk.jar和签名文件.可以使用Android源码获取,若没有源码,可以在这下载:SignApk.jar.(包含了SignApk.jar和签名文件和批处理文件) 1 Si ...
- bootstrap的下拉菜单组件与导航条
前期准备:bootstrap的css文件和js文件先引入 Bootstrap 组件-拉下菜单(class+js) 下拉菜单必需三级结构 <div class="dropdown&quo ...
- pycharm 配置使用 flake8 进行语法检测
打开 PyCharm 在 Terminal 处输入 pip install flake8 在 File ->Settings ->Tools->External Tools 添加一个 ...
- IEDA创建Springboot项目
随着技术的更新对于开发速度的追求,我们越来越不能忍受的是Spring框架对于集成开发以后大量的配置问题.所以SprigBoot应运而生,SpringBoot框架其实就是在Spring框架的外边包裹上了 ...
- xshell 远程登陆CentOS7 免密登陆
首先说一下大体的思路: 1. 以密码登陆CentOS系统 2. 配置ssh 3. xshell 生成秘钥 4. 进行免密登陆 软件.设备: xshell(下载地址(免费版),也可以自行百度下载) Ce ...
- Linux设备管理(四)_从sysfs回到ktype【转】
转自:https://www.cnblogs.com/xiaojiang1025/archive/2016/12/21/6202298.html sysfs是一个基于ramfs的文件系统,在2.6内核 ...