Jenkins+Sonar质量门禁【实践篇-maven版】

配置文档百度挺多的,就不展开来了

首先很遗憾的告诉大家,maven版做不了质量门禁!只能扫描!!!

     就我们公司项目里,jenkins建的maven任务是最多的,所以我也首选用maven项目测试,然而11月尾叫了解,各种测试下来没有进展。那时还特意去官网注册,生成SonarQube token,配置到jenkins凭证上,以便在jenkins发布中使用token代替账号密码的方式去操作sonarqube,还下载中文汉化包进行汉化。

  然而配置任务发布报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/sonar/batch/bootstrapper/IssueListener,SonarQube scanner exited with non-zero code

  搞了1~2天,从此被抓去干别的活了。。。没错,就是去搞虚拟机迁移,因为公司买了新服务器,需要把伪服务器(家用台式机改造的linux系统,装了个virtualbox)的虚拟机迁移到新服务器上(2网段)。而这台测试机器刚好也要挪走,话说当时想直接把jenkins装在系统上,而不是docker上,因为想着以后一直用。

  安装过程有个诡异的问题,不知道是不是2网段跟默认0网段有什么冲突,各种方式装jenkins(java -jar war包、tomcat跑war包,甚至yum 直接装),无一不遇到首次安装jenkins,插件安装失败问题:

不要告诉我这个方法:

  1. 1 sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g;s#http://www.google.com#https://www.baidu.com#g' default.json
  2. 2
  3. 3 http://jenkins访问ip/jenkins/pluginManager/advanced
  4. 4 上面的 Update Site url 改成 mirrors.tuna.tsinghua.edu.cn 。。。

   试过很多遍,无解。竟然改完之后,重启jenkins,修改过的配置文件还是没改过前的。且考虑到,装完之后还要配置很多东西,什么git、java、maven,还要根据报错信息装缺漏的插件。。。    

  无奈只能搞回docker版的jenkins,话说docker恢复安装环境确实快。

1、恢复镜像:原服务器上docker save,新服务器docker load

2、数据恢复:各种映射到宿主机的数据目录拷贝复制

3、恢复服务:docker run -v 跑起来即可

上面都是流水文,交代下背景,下面干货来了!

  话说我在jenkins建的maven项目里,报错信息看不到解决办法。所以干脆模拟整个过程:进去docker jenkins里面,git 拉项目,然后手动运行sonar扫描。

  因为公司项目不敢在pom.xml 添加东西,所以借来了小俊子给的helloworld java 项目。然后扫描成功了。

1、进去jenkins容器

docker exec -it xxxx bash

2、进入jenkins worksapce目录

3、克隆hello-world.git项目(趁某俊把这个项目还是设置公开,大家有需要赶紧下下来,哈哈哈,我已经粘到我gitee上了,下一篇会说到)

  1. git clone https://gitee.com/xie-zijun/hello-world.git

4、修改pom.xml 文件,添加插件引入:

  1. <plugin>
  2. <groupId>org.sonarsource.scanner.maven</groupId>
  3. <artifactId>sonar-maven-plugin</artifactId>
  4. <version>3.2</version>
  5. </plugin>

加个题外话,其实我们公司maven项目也能加,因为这堆代码要放到build和plugins里面的,如果pom.xml没有这两个标签,加上去即可。就是下面这个意思:

  1. <!--maven打包插件-->
  2. <build>
  3. <plugins>
  4. 上面那坨代码
  5. </plugins>
  6. </build>

4、手动运行扫描

  1. bash-5.1# /usr/local/maven/bin/mvn install sonar:sonar -Dsonar.host.url=http://192.168.2.170:9090

Jenkins+Sonar质量门禁【实践篇-maven版】的更多相关文章

  1. 超详细,自动化测试接入Jenkins+Sonar质量门禁实践

    大家好,我叫董鑫,一名在测试开发道路上的新手.第一阶段的学习已然结束,收获颇多,了解了很多在自己平时测试工作无法接触到的新知识,比如这次在这里分享的Sonarqube进行静态代码扫描并集成Jenkin ...

  2. jenkins + sonar 安装配置

    最近把snoar 添加上了 [root@snoar data]#   wget https://sonarsource.bintray.com/Distribution/sonarqube/sonar ...

  3. Azure 进阶攻略 | 上云后的系统,「门禁」制度又该如何实现?

    各位办公室白领们,不妨回想一下自己每天去公司上班时的一些细节. 为避免「闲杂人等」进入工作场所,我们需要证明自己是这家公司的员工才能进入,对吧!所有员工,无论所属部门或职位,都必须先证明自己身份,例如 ...

  4. Jenkins+Sonar搭建持续集成和代码质量检查环境

    Jenkins+Sonar搭建 一.相关环境及下载地址 系统:Ubuntu JDK:1.8 MySQL:5.7 软件包: jenkins_2.121.3_all.deb sonarqube-7.3.z ...

  5. Jenkins+Sonar 项目构建前代码审查

    一.sonar简介 1.概述 Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/S ...

  6. RFID Hacking④:使用ProxMark3 破解门禁

    文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 前言 国际黑客大会Defcon传统之一:开锁!因为黑客认为锁也是一种安全挑战.我们在黑客题材电影.电视剧中也常常 ...

  7. RFID Hacking①:突破门禁潜入FreeBuf大本营

    某天,偶然间拿到了FreeBuf Pnig0s同学的工卡信息,终于有机会去做一些羞羞的事情了 引子 以下故事纯属虚构,如有雷同,纯属巧合. 我应聘了一个大型IT公司的"网络攻击研究部经理&q ...

  8. 手机NFC模拟门禁卡

    楼主所在的某电子科技类大学,从宿舍楼到实验楼到图书馆办公楼,全部都有门禁,前两天突然在某安软件市场看到一个可以模拟门禁卡的软件,然而可能是我的手机系统太6了,竟然模拟不了,无奈自己动手,从根本上解决问 ...

  9. Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统

    继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization aid that allows a set of threads to all ...

随机推荐

  1. day13 装饰器与语法糖

    day13 装饰器与语法糖 一.装饰器 1.什么是装饰器 装饰器就是装饰别人的工具,具体是指为被装饰者添加新功能 装饰器->函数 被装饰者->函数 2.为何要用装饰器 装饰器的核心思想:( ...

  2. day29并发编程

    day29并发编程 1.进程锁 一.使用锁维护执行顺序 代码: from multiprocessing import Process,Lock import os import time def t ...

  3. C++ 数字分类

           1012 数字分类 (20分) 输入格式: 每个输入包含 1 个测试用例.每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数.数字间 ...

  4. Apache架构师的30条设计原则

    本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员. 他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员. 他是 ...

  5. Spring Boot 创建定时任务(配合数据库动态执行)

    序言:创建定时任务非常简单,主要有两种创建方式:一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer). 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库 ...

  6. 【Linux】【Shell】【Basic】一行代码解决常见问题

    1. 查看可用IP for i in `seq 1 255`; do ping -c 1 10.210.55.$i >> /dev/null; if [ $? -eq 1 ]; then ...

  7. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)

    先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ...

  8. shell获取目录下(包括子目录)所有文件名、路径、文件大小

    一例shell脚本:取得目录下(包括子目录)所有文件名.路径与文件大小. 代码,shell脚本: lsdir.sh #!/bin/bash # #site: www.jquerycn.cn funct ...

  9. Spring MVC入门(一)—— RestTemplate组件

    ClientHttpRequestFactory 它是个函数式接口,用于根据URI和HttpMethod创建出一个ClientHttpRequest来发送请求~ ClientHttpRequest它代 ...

  10. Quartz在.NET中的使用

    一.背景 例如需要在某年某月去将数据库的某个数据更新或者同步,又或者是每隔一段时间来执行一部分代码去调用接口,但是又不想人为的手动去执行 针对此类业务可以使用"定时调用任务",市面 ...