记录本周遇到的头疼了很久的一个问题,由于公司需要使用jenkins来自动管理构建项目,然后在关联sonar对项目代码质量进行审核。

接着坑爹的问题来了,原有的技术手段为项目构建成功后通过jenkins的构建后操作去触发提前配置好的sonar服务器对代码质量进行管理,然而处于技术层面以及每次项目构建时间上的考虑,现在需要对原有技术进行替换更新,决定使用在构建中去触发sonar。具体build执行命令如下:

  clean cobertura:cobertura -Dcobertura.report.format=xml  -Dmaven.test.skip=false -Dmaven.test.failure.ignore=true org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar  -X

  目前我们使用的jenkins服务器为远程服务器,同样sonar也为远程服务器。前提(项目本地单元测试没有问题,构建没有问题)。

  在实际jenkins构建中出现以下问题:

  1. 找不到相关依赖的问题。

    此问题出的有一些莫名其妙,总体而言为根据maven配置在我们的本地仓库其实是存在相关依赖的,而且maven的setting文件中也配置了本地仓库地址。

    具体解决方式就更奇葩:为将相关依赖关系在本地仓库移除,并根据包结构重新配置一遍就可以了。

  2.找不到相关工程项目

    我们的项目为多模块项目,在构建的时候根据输出日志可以查看到相关的每个模块的构建均为success,然而在最终整体项目构建的时候报错,根据记录日志提示为找不到相关工程项目。然后我们在到日志地址查看发现项目其实也是存在的。

  具体解决方式:这个问题我们尝试过很多方式,包括更改包结构,统一Git仓库源码地址,单独整合单一模块测试。。等等。。然而均已失败告终。。最后根据build指令去推敲发现是因为build指令并不支持当前配置的soanr版本。。。。所以。。经过利弊权衡,最终我们选择了更换sonar服务器的版本。

最后说一下我们为什么会选择更改sonar版本,而非更改build命令。

  因为我们整个工程下面涉及到19个模块服务,在未做出调整之前我们构建整个项目,并得到最终扫描结果所需要花费的时间大概是4个小时以上。也就是说如果在代码中存在必须要更改的质量问题,改一次然后在测试的成本太高。而通过后面一种方式构建到处sonar结果所需要的时间仅仅10多分钟,可以大幅提升效率。所以还是推荐使用后者。

Jenkins与sonar扫描的集成问题的更多相关文章

  1. Jenkins+Maven+Sonar系统持续集成环境部署以及配置

    一.Jenkins介绍以及安装 什么是持续集成?   随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Ag ...

  2. gitlib配置push后自动触发jenkins构建sonar扫描

    jenkins所用到的插件: Gitlab Hook Plugin 配置步骤 1.先进入gitlab的个人设置,生成api token 2.复制生成的访问令牌,打开jenkins的凭据,添加选择类型是 ...

  3. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  4. Jenkins+maven+git+sonar 系统持续集成&代码单測管理

    Jenkins+maven+git+sonar 系统持续集成&代码单測管理 Jenkins的安装 Jenkins是基于Java开发的一种持续集成工具,用于监控持续反复的工作.功能包含: 1.持 ...

  5. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以 ...

  6. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  7. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一) 2015-01-14 20:28 by 飘扬的红领巾, 4322 阅读, 5 评论, 收藏, 编辑 ...

  8. Jenkins 使用 SonarQube 扫描 Coding

    Jenkins 使用 SonarQube 扫描 Coding   系统环境: Jenkins 版本:2.176 SonarQube 版本:7.4.0 一.SonarQube 介绍 1.SonarQub ...

  9. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

随机推荐

  1. 收集的博客网址springboot、cloud

    纯洁的微笑(spring-boot,cloud等)

  2. es6 Module语法

    export 命令 1.概念 export用于定义要输出的变量(let.var.const.function.class),定义的变量与值是动态绑定关系. 2.命令格式 1. export 变量定义 ...

  3. 如何解决Dynamics 365的错误:用户身份验证无效,MSIS0006

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复246或者20170312可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  4. 从.Net到Java学习第十一篇——SpringBoot登录实现

    从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...

  5. 总结:BGP和静态路由并存,达到故障自动倒换的目的。

    总体结论: 在上云的场景中,客户需要本地数据中心到云上VPC,出现网络故障时做到自动倒换,保证业务不中断. 一.客户需求 1.客户有总厂.分厂.总厂是通过专线和VPN连接上云,分厂是通过专线先连接到总 ...

  6. C语言使用HZK16显示每个像素的代码

    下边内容段是关于C语言使用HZK16显示每个像素的内容. #include<stdio.h>#include<stdlib.h>void main(){ int i,j; ch ...

  7. Android 修改包名,导致安装错误

    一.app运行安装时出错 [安装时出错]: [百度翻译] 安装失败的消息未能敲定会议:install_failed_invalid_apk:/数据/应用程序/ vmdl292154713.tmp/9_ ...

  8. 操作系统:修改VirtualBox for Mac的虚拟硬盘大小

    我安装的是Mac版的VirtualBox,不能从GUI上修改硬盘大小,但是实在是大小不够用了. 百度后得知,可以用命令行修改. 1.打开终端,输入sudo su,取得管理员权限 $ sudo su P ...

  9. Linux内存描述之内存节点node--Linux内存管理(二)

    1 内存节点node 1.1 为什么要用node来描述内存 这点前面是说的很明白了, NUMA结构下, 每个处理器CPU与一个本地内存直接相连, 而不同处理器之前则通过总线进行进一步的连接, 因此相对 ...

  10. LeetCode算法题-Maximum Depth of N-ary Tree(Java实现)

    这是悦乐书的第261次更新,第274篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第128题(顺位题号是559).给定n-ary树,找到它的最大深度.最大深度是从根节点到 ...