Devops学习实践(五)jenkins 与 ant 、findbugs 配合使用

2023-11-16

      之前jenkins里面介绍用findbugs主要是采用maven方式,但是很多情况下,工程项目采用的ant进行编译和打包的,通过jenkins ant  findbugs结合的方式也是可以进行持续集成的。 jenkins 的特点就是能将这些工具方便的集成起来,为了与工程本身的耦合减少,所以思路是 ant 编译工程 与ant 调用findbugs 通过jenkins分2步进行,这样方便灵活性更高。

    这里介绍一下ant 的安装和配置

 一、目标和环境

      准备在centos6.5 上安装ant ,配合jenkins 使用,安装环境如下:  192.168.136.144     centos 6.5 

      通过jenkins 调用 ant 和findbugs 进行工程的jar包或者class 检查

 二、ant 的安装和配置

 1、下载ant

      去ant 官网下载所需要的ant 包,URL为:http://ant.apache.org/bindownload.cgi

      因为是在centos上安装,所以选择的包是:      

 2、部署和配置

       将下载的包上传到目标服务器,使用tar 进行解压:       

    tar  -vxf  apache-ant-1.10.1-bin.tar.gz 
       解压后的目录:/home/nmc/dev/apache-ant-1.10.1  有些同学喜欢放到  /opt 目录下,有些喜欢放到   /usr 目录,放哪里看个人喜好。 我是放到 /usr/ant ,所以执行:
    mv  /home/nmc/dev/apache-ant-1.10.1  /usr/ant
       下一步进行配置:       

    vi /etc/profile 
       在这个配置文件中,进行如下配置:

export  ANT_HOME=/usr/ant 
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH 
       保存后,退出文件编辑,然后执行:   

source /etc/profile
       执行这句命令的目的是不启动,立刻生效

       
       最后,验证一下ant 命令是否成功,我们可以执行一下ant ,如果提示没有build.xml 说明ant 本身已经安装配置好了,也可以用ant -version 来查看是否能正确返回版本信息。

[root@cwqsolo apache-ant-1.10.1]# ant
Buildfile: build.xml does not exist!
Build failed
[root@cwqsolo apache-ant-1.10.1]# ant -version 
Apache Ant(TM) version 1.10.1 compiled on February 2 2017

三、findbugs的安装和配置

       由于findbugs 3.0 需要java 1.7配合,考虑到我们实际工作中,工程项目众多,存在java 1.6 ,1.7,  1.8 并存的情况,所以就采用findbugs 2.0.2(后续证明这是个错误选择,因为2.0.2对1.8 不支持,权衡利弊,所以最后所有工程都需要是用java 1.7 及以上版本。

1、下载fingbugs

       通过下面URL: https://sourceforge.net/projects/findbugs/files/findbugs/2.0.2/  选择 findbugs-2.0.2.tar.gz 下载,下载传到centos服务器144上,并解压

2、部署

       将解压后的目录,通过mv的方式 放置到你想要的目录,本例中为 : /home/nmc/dev/devops/findbugs

       其实findbugs目录下,只需要留有lib 目录,其他目录和文件都可以删除(特指在用ant 调用的情况),另外,还需要有一个ant 调用的build 文件,本例子中findbugsbuild.xml

        

<?xml version="1.0" ?>
<project name="check" default="default" basedir=".">

	<property name="src.dir" value="${basedir}/src" />
	<property name="class.dir" value="${basedir}/WebRoot/WEB-INF/classes" />
	<property name="dist.dir" value="${basedir}/dist" />
  <property name="findbugs.dir" value="/home/nmc/dev/devops/findbugs"/>
  
  <path id="findbugs.path">
        <fileset dir="${findbugs.dir}">
            <include name="**/*.jar" />
        </fileset>
  </path>
   

  <!-- =================================================================== -->  
  <!-- Findbugs build -->  
  <!-- =================================================================== -->  
  <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="findbugs.path" />  
  
  <target name="findbugs" >  
      <mkdir dir="${basedir}/findbugs" /> 
      <findbugs home="${findbugs.dir}" output="xml" outputFile="${basedir}/findbugs/findbugs_errors.xml">  
          <sourcePath path="${src.dir}" />  
          <class location="${class.di\r}" />  
      </findbugs>  
  </target>    
    
  <target name="default" depends="findbugs">
	</target>

</project>
          findbugs 目录情况如下:
[root@cwqsolo findbugs]# ls
findbugsBuid.xml  lib
[root@cwqsolo findbugs]# 

3、手工验证findbugs正常工作

进入测试检查的工程,拷贝findbugsBuid.xml

        到工程目录,执行  ant  -file  findbugsBuid.xml

        

[root@cwqsolo cwq_testproject1]# ant  -f  findbugsBuid.xml
Buildfile: /home/nmc/dev/devops/jenkins/workspace/cwq_testproject1/findbugsBuid.xml

findbugs:
 [findbugs] Executing findbugs FindBugsTask from ant task
 [findbugs] Running FindBugs...
 [findbugs] The following classes needed for analysis were missing:
 [findbugs]   kafka.consumer.ConsumerConfig
 [findbugs]   kafka.javaapi.consumer.ConsumerConnector
 [findbugs]   kafka.consumer.KafkaStream
 [findbugs]   kafka.consumer.ConsumerIterator
 [findbugs]   kafka.message.MessageAndMetadata
 [findbugs]   kafka.consumer.Consumer
 [findbugs]   kafka.producer.ProducerConfig
 [findbugs]   kafka.producer.KeyedMessage
 [findbugs]   kafka.javaapi.producer.Producer
 [findbugs]   kafka.serializer.StringEncoder
 [findbugs] Warnings generated: 1
 [findbugs] Missing classes: 9
 [findbugs] Calculating exit code...
 [findbugs] Setting 'missing class' flag (2)
 [findbugs] Setting 'bugs found' flag (1)
 [findbugs] Exit code set to: 3
 [findbugs] Java Result: 3
 [findbugs] Classes needed for analysis were missing
 [findbugs] Output saved to /home/nmc/dev/devops/jenkins/workspace/cwq_testproject1/findbugs/findbugs_errors.xml

default:

BUILD SUCCESSFUL
Total time: 4 seconds
[root@cwqsolo cwq_testproject1]# 

        执行后,出现BUILD SUCCESSFUL 就表示成功了。

四、jenkins中配置

jenkins 中构件工程这块就不细说了,只描述一下工程构件基本配置后,如何加入findbugs

1、 添加构建

在原来的构建ant build 动作里面添加一个 拷贝动作,目的是在ant 编译工程后,拷贝代码走查的配置文件,到本工程中

        在这个构件动作下,新增一个ant 构建动作,某种程度上,jenkins 就是一个提供界面进行各种动作串联的工具。

       

    然后,在构建后的动作里面,发布一下findbugs的结果(事先要在jenkins中安装findbugs插件,具体看前面的资料)

    

     这些配置好后,就可以保存,进行构建了。

     注意findbugs的趋势图,需要构建2次后才会出来,如果一切顺利,大家看到构建趋势图和findbugs的链接,点击链接可以查看具体的bugs项

五:补充:

 1、      findbugs 2.0.2报错

 [findbugs]   Unable to get XClass for java/lang/Class
 [findbugs]     java.lang.ArrayIndexOutOfBoundsException
 [findbugs] Jul 27, 2017 8:17:35 PM edu.umd.cs.findbugs.TextUIBugReporter reportAnalysisError
 [findbugs] SEVERE: Couldn't get class info for java/util/concurrent/ConcurrentMap
 [findbugs] java.lang.ArrayIndexOutOfBoundsException: 28526

 ----解决:这个是因为工程是用java 1.8 编译的,选择findbugs 3.0 以上版本


2、 如果你的工程要求jdk 1.7 那么请把ant 降低到 1.9  我用1.9.3  没有问题,否则会出现 jdk版本错误,错误码:52


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Devops学习实践(五)jenkins 与 ant 、findbugs 配合使用 的相关文章

随机推荐

  • JUC多线程

    JUC多线程 1 读写锁 ReadWriteLock 2 线程八锁 3 线程池 4 线程池调度 分支合并框架 ForkJoinPool 1 读写锁 ReadWriteLock 读读之间不需要互斥 读写 写写之间需要互斥 通过readWrit
  • GCC的-fomit-frame-pointer编译选项的含义

    GCC的 fomit frame pointer编译选项的含义 优化你的软件时 发觉 fomit frame pointer 这个选项还是蛮有用的 GCC手册上面这么说 Don t keep the frame pointer in a r
  • LVS DR模式负载均衡群集部署

    目录 1 LVS DR 模式的特点 1 1 数据包流向分析 1 2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2 1 配置负载调度器 2 1 1 配置虚拟 IP 地址 2 1 2 调整 proc 响应参数 2 1 3 配置负载
  • Linux Top 命令解析

    转自 http www jb51 net LINUXjishu 34604 html TOP是一个动态显示过程 即可以通过用户按键来不断刷新当前状态 如果在前台执行该命令 它将独占前台 直到用户终止该程序为止 比较准确的说 top命令提供了
  • SSM框架实现简单的增删改查

    引言 在中软国际实习的第三天 培训老师要求我们整合出SSM框架实现简单的增删改查 我参考某篇博文链接完成了用户的增删改除 故发此博文以供后来者参考 开发工具 IntelliJ IDEA Ultimate 2018 2 2 Apache to
  • react 更新阶段的生命周期函数

    shouldComponentUpdate nextProps nextState 你可以通过这个方法控制组件是否重新渲染 如果返回 false 组件就不会重新渲染 这个生命周期在 React js 性能优化上非常有用 componentW
  • PyTorch 重磅更新,不只是支持 Windows

    翻译 林椿眄 出品 AI 科技大本营 公众号ID rgznai100 这次版本的主要更新一些性能的优化 包括权衡内存计算 提供 Windows 支持 24个基础分布 变量及数据类型 零维张量 张量变量合并 支持 CuDNN 7 1 加快分布
  • 模型部署之TorchScript

    一 关于torchscript和jit介绍 1 关于torchscript TorchScript是Pytorch模型 继承自nn Module 的中间表示 保存后的torchscript模型可以在像C 这种高性能的环境中运行 TorchS
  • 浏览器定位是如何实现的?为什么会有浏览器定位失败的情况?

    高德地图开放平台JavaScript API提供的Geolocation定位插件 融合了HTML5 Geolocation定位接口 精确IP定位服务 以及安卓定位sdk定位 其中与安卓定位sdk的结合使用适用于开发安卓系统的H5应用 需同时
  • STM32H743必要外围电路分析

    BOOT STM32采用ARM内核 和ARM处理器一样 都有专门的boot脚决定单片机从何处启动 在官方数据手册的第105页 我们可以看到 系统复位后 在SYSTICK的第四个上升沿锁存BOOT引脚的值 复位后 BOOT引脚可以由用户自由配
  • pytorch报错大全

    1 IndentationError unexpected indent 缩进有问题 2 IndexError list index out of range 情况一 list index 中的index下标超出范围了 所以出现了访问越界
  • vs插件,插件大全,插件大全全家桶

    插件大全全家桶 插件大全全家桶 但是本着点赞自愿 收藏吃灰 还是多少可以支持一下
  • Linux服务器搭建Docker

    Linux服务器搭建Docker 一 Docker概述 Docker的出现的原因 二 Docker安装 1 环境准备 2 下载安装 3 阿里云镜像加速 三 Docker命令 1 镜像命令 2 容器命令 四 操作命令 1 生成镜像 commi
  • 2020web前端面试整理

    背景 2020年是比较特殊的一年 由于新冠影响导致很多事情发生了变化 同时也改变了人们的一些常规习惯 就拿换工作来说 为了减少大家的出行和接触 线上视频 电话面试成了趋势 但是万变不离其宗 技术才是王道 下面是个人近期的一些面试经验和需要大
  • 电视系统服务器异常,云电视服务器异常

    云电视服务器异常 内容精选 换一换 云服务器网络异常 防火墙未放行本地远程桌面端口 云服务器CPU负载过高等问题均可能导致云服务器无法正常登录 本节操作介绍无法登录Windows弹性云服务器的排查思路 当您的云服务器无法远程登录时 我们建议
  • Redis学习笔记(一):Redis持久化——RDB与AOF

    引子 前两天晚上下班的时候 和朋友走在路上聊起了Redis的主从复制与哨兵模式 突然觉得自己对这一块的知识还没有一个比较系统化的了解 所以 现在就开始仔细学习一下相关的知识 整理一下Redis相关的知识点 这里做个记录 同时也希望能帮助到大
  • 11月5日 Unreal Engine Rider 代码使用记录

    11月5日的代码使用记录 TSubclassOf UPROPERTY EditAnywhere TSubclassOf
  • C++查漏补缺

    查漏补缺 目录 typedef const与指针 构造函数 使用初始化列表来初始化字段 define条件编译 c 抽象类 C 11新特性之 default C 中std allocator的使用 unique lock mutex auto
  • 软件测试工作中需要使用的工具

    作为一个测试人员在日常工作中会使用到很多的工具 今天给大家分享一下这些工具 对软件测试 接口 自动化 性能测试和日常文档编写办公有帮助的网站 接口测试大力推荐国产的接口测试工具 apipost apipost还是一款很不错的接口文档生产工具
  • Devops学习实践(五)jenkins 与 ant 、findbugs 配合使用

    之前jenkins里面介绍用findbugs主要是采用maven方式 但是很多情况下 工程项目采用的ant进行编译和打包的 通过jenkins ant findbugs结合的方式也是可以进行持续集成的 jenkins 的特点就是能将这些工具