`
ln_ydc
  • 浏览: 270773 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Maven入门实战笔记10-持续集成

 
阅读更多

 

 

 

 

持续集成

概念:

持续集成就是快速高频率自动构建项目的所有源码,并为项目成员提供丰富的反馈信息。

其中构建包括:编译、测试、审查、打包、部署

持续集成流程:



 一次完整的集成一般包括6个步骤:

1.持续编译

2.持续数据库集成

3.持续测试

好的单元测试必须是自动化的、可重复执行的、不依赖于环境的,并且能够自我检查的

4.持续审查

Checkstyle和PMD之类的工具发现代码中的坏味道(Bad Smell)

5.持续部署

6.持续反馈

 

硬件设置:集成服务器性能越高越好

源码控制工具、自动化构建工具、自动化测试工具、持续集成软件

优秀的持续集成工具:

开源工具CruiseControl、Hudson

商业的Bamboo和TeamCity

 

Hudson简介

优点:

功能强大、界面易用,与主流构建工具、版本控制系统以及自动化测试框架都能很好集成

灵活的插件扩展框架

安装Hudson

下载:http://hudson-ci.org/ 

下载文件为:hudson-3.0.0.war

运行:最简单启动方式为

java -jar hudson-3.0.0.war

 

 

启动后,访问 http://localhost:8080

停止:Ctrl+C

默认商品为8080,指定端口启动

java -jar hudson-3.0.0.war --httpPort=8082

 

 

 也可以把war包部署到各种Web容器中

 

问题:用命令行启动时,遇到下列问题:

 

       Initial setup required. Please go to the Hudson Dashboard and complete the setup.

访问hudson设置插件安装,即可(选择默认安装)

安装个插件费这么长时间。。。最后截个图



 建议装到本地

 

选择Install as Windows Service

 

 

准备Subversion仓库

常见版本控制工具:CVS、Subversion、Git、Mercurial

安装Subversion服务器软件(svnserve) 参考   svn应用笔记

常用命令:

1.查看svnserve安装

svnserve --version

 

 

 

2.创建一个Subversion仓库

 

mkdir svn-repos

svnadmin create svn-repos\account

 3.导入account项目,导入前,用mvn clean清除项目输出文件

 

 

svn import -m "initial import" . file:///d:/svn/svn-repos/account/trunk

 

 上述命令将当前目录的全部内容提交到Subversion仓库的/account/trunk路径下

 

-m选项表示提交的注释

3.启动svnserve服务

svnserve -d -r svn-repos --listen-host 0.0.0.0

-d表示将svnserve服务作为守护进程运行

 

-r表示Subversion仓库的位置

--listen-host是为了强制将svnserve绑定到IPv4地址(有些系统,svnserve会默认绑定IPv6,当Hudson使用IPv4地址访问Subversion仓库的时候就会失败)

疑问:这个命令没有指定启动哪个库,若在svn-repos下有多个库的话,是启动哪个呢?

直接用这个命令,就明白了

svnserve -d -r d://svn/svn-repos/account --listen-host 0.0.0.0

 

 

4.检查Subversion仓库内容

 

svn list svn://localhost/account/trunk

 

 

 

Hudson的基本系统设置a在创建Hudson持续集成任务之前,用户需要对Hudson系统做一些基本的配置,包括JDK安装位置和Maven安装等在内的重要信息都 必须首先配置正确。

左侧“系统管理”--->右侧“系统设置”

1.配置JDK

Name(别名)

JAVA_HOME

2.配置Maven

Name

MAVEN_HOME

3.配置MAVEN_OPTS环境变量

参考  Maven入门实战笔记01  -Xms128m -Xmx512m

最后,点击页面正文的Save按钮保存系统设置

 

创建Hudson任务

创建Hudson任务来集成Maven项目

左边“新建任务”--->填写任务的名称及类型



 对于一般Maven项目可选择

    构建一个自由风格的软件项目
    构建一个Maven 2/3 (Legacy)项目

这两项,前者不公支持Maven项目,还支持其他类型的构建工具,如Ant、Shell。

对于Maven用户来说,两者最大的不同在于前者需要用户进行多一点的配置,而后者会使用Hduson自带的Maven,且从项目的POM中获取中够的信息以免去一些配置。推荐free-style

 

Hudson任务的基本配置

1.名称和描述,当任务比较多的时候,简洁而有意义的名称及描述就十分重要

2.Discard Old Builds:该选项配置如何抛弃旧的构建

Hudson每次构建相关的文件都会保存下来,将会渐渐耗光磁盘空间,为此Hudson提供两种方式供选择:

Days to keep builds:如果其值为非空的N,就留N天之内的构建文件

Max # of builds to keep:如果#为非空,就公保留最多#个最近构建的相关文件

 上图所示配置表示最多保留10个最近的构建

3.如果有多个JDK,这里还需选择JDK版本

 

Hudson任务的源码仓库配置

在项目配置页面的Source Code Management部分,选择 Subversion,输入Subversion仓库地址 ,一般来说,其他选项保留默认值即可,如图:



 如果Subversion仓库需要认证,Hudson会提示用户输入认证信息:



 

Hudson任务的构建触发配置

在Build Triggers部分配置的是触发构建的方式。

Build after other projects are built:在其它项目构建完成后构建本项目

Bukld periodically:周期性地构建本项目

Poll SCM:周期性地轮询源码仓库,发现有更新的时候构建本项目,推荐选这个

 

既然是轮询,就需要配置轮询的频率,Hudson使用了著名的UNIX任务高度工具Cron(http://en.wikipedia.org/wiki/Cron)所使用的配置方式。这种配置方式使用5个字段表示不同的时间单位(字段之间用空格或制表符分隔)

分 :0-59

时 :0-23

日 :1-31

月 :1-12

星期几 :0-7(0和7都表示星期天)

特殊字符:

*:星号表示匹配范围内所有值

M-N:连字符表示匹配M-N范围内的所有值,如"1-5"

A,B,...,Z:逗号表示匹配多个值,如"0,15,10"

*/X或M-N/X:范围加上斜杠表示匹配范围内能被X整除的值,如“1-10/3”,就等同于“3,6,9”

举例:

(1)****:每分钟

(2)5****:每小时中的第5分钟

(3)*/10****:每隔10分钟

(4)45 10 ** 1-5:每周一到周五的上午10点45分

(5)0,30 *  13 * 5:每月13号的每半个小时,或者每周五的每半个小时

在配置轮询的时候,还可以使用“#”添加注释,此外空白的行会被忽略。

对于一个健康的项目来说,觉见做法是:每隔10分钟轮询代码仓库(*/10 * * * *),如图



 Hudson任务的构建配置

单击Build中的Add build step下三角按钮,选择Invoke Maven2(legacy)(《Maven实践》书中写的是:Invoke top-level Maven targets),如图:

 完成后,单击Save

 

 

监视Hudson任务状态a

Hudson界面,了解各个任务的当前及历史状态,包括整体的列表显示、自定义视图、单个任务的具体信息,如构建日志和测试报告等

全局任务状态  

默认主页显示了当前服务上所有集成任务的状态,如图:




 四部分:导航菜单、、构建队列、构建状态、任务状态

任务状态:

S:任务当前状态;

第一列的球形颜色:

蓝色:任务最近一次的构建是成功的

红色:任务最近一次的构建是失败的

黄色:任务最近一次的构建表成功了,但不稳定(主要是因为有失败的测试)

灰色:任务从未被执行过或者被禁用了

如果图标闪烁,表示任务正在执行一次构建

W:天气

第二列,使用天气图标表示任务长期的一个状态

万里晴空:>80%成功

稍有乌云:60%-80%成功

乌云密布:40%-60%成功

阴雨绵绵:20%-40%成功

电闪雷鸣:<20%成功

自定义任务视图

用户可以单击默认视图All旁边的加号(+)以添加一个自定义视图

单个任务状态a

Maven项目测试报告

为了显示项目的测试结果信息,需要一些额外的配置。

maven-surefire-plugin会在项目的tqrget/surefire-reports目录下生成与JUnit兼容的XML格式测试报告,Hudson能够基于这种格式的文件生成图形化的测试报告。

 

为Hudson任务配置测试报告:

用户可以配置一个Hudson,在配置页面的Post-build Action部分选择Publish JUnit test result report选项,并且将Test report XMLs赋值为

**/target/surefire-reports/TEST-*.xml

该表达式表示匹配任意目录下target/surefire-reports/子目录中以Test-开头的XML文件,这也匹配所有maven-surefire-plugin生成的XML格式报告文件

有了上述配置后,就能在任务状态页面中看到最新的测试结果与测试结果趋势

 

配置构建命令忽略测试:

将Maven构建命令以改为:clean deploy -Dmaven.test.failure.ignore

这样失败的测试就不会导致构建失败

这种配置方式能够帮助用户区分失败的构建与不稳定的构建

 

 

Hudson用户管理

Subversion仓库,默认该仓库是匿名可读的,认证用户可写,

现在关闭匿名可读权限,同时添加一些用户。具体参考《Subversion与版本控制》

编辑Subersion仓库下的conf/senserve.conf文件中的[general]小节,如下:

 

[general]
# anon-access = read
# auth-access = write
password-db = passwd
anon-access = none:表示匿名用户没有任何权限

 

auth-access = write:表示经认证用户拥有读写权限

password-db = passwd:表示存储用户信息的数据位于同级目录下的passwd文件中

编辑conf/passwd文件如下:

 

[users]
admin = admin123
yangdc = yangdc
 这里为仓库配置了三个用户,等号左边是用户名,右边是密码
简单的Subversion仓库用户权限配置

用svn命令提交

svn commit -m "add developers config" --username yangdc --password yangdc

 

 Hudson得到这些更改并触发集成任务之后,相关的Subversion用户信息就已经被Hudson存储起来了,单击Hudson页面左侧的用户,就可看到相关的用户信息。

点击配置,还可添加用户邮箱

 

 

邮件反馈

为Hudson配置邮件服务器信息。系统设置-->E-mail Notification部分

SMTP

Default user e-mail suffix

System Admin E-mail Address

Hudson URL

SMTP Authentication

 

关于SMTP设置,163邮箱的:

收件服务器设置
IMAP收件服务器地址:imap.163.com 安全:开(SSL/TLS) 端口号:993
126邮箱的IMAP服务器地址:imap.126.com ,
yeah邮箱的IMAP服务器地址:imap.yeah.net,其余部分与163一致;
若安全选择关闭,请将端口号改为 143。 
 
 
 发件服务器设置
SMTP发件服务器地址:smtp.163.com 安全:开(SSL/TLS) 端口号:465 / 994
126邮箱的SMTP服务器地址:smtp.126.com ,
yeah邮箱的SMTP服务器地址:smtp.yeah.net;
若安全选择关闭,请将端口号改为 25。 

 

接下来配置Hudson任务使用邮件反馈,进入任务的配置页面,找到最后Post-build Action小节中 E-mail Notification复选框

问题:什么样的构建触发邮件反馈,邮件会发送给谁?

第一个问题:

(1)失败的构建会触发邮件反馈

(2)成功构建后的一次不稳定构建会触发邮件反馈,不稳定往往是由失败的测试引起的,因此成功后的一次不稳定往往表示有回归性测试失败

(3)失败或不稳定构建后的一次成功构建会触发邮件反馈

(4)用户可以配置是否每次不稳定构建都触发邮件反馈

第二个问题:

可以在 Recipients中配置一个邮件列表(用空格分离),一般来说项目负责人应该在这个列表中,选项 Send separate e-mails to individuals who broke the build  表示是否为所有的不稳定构建触发邮件反馈,如果 不选,只有成功构建后的第一次不稳定构建才会触发邮件反馈。推荐选上    

 

Hudson工作目录

 了解Hudson的工作目录不仅能帮助读者理解Hudson用户界面中的各种特性,更重要的是,读者需要明白怎样为Hudson分配合理的磁盘空间,长期运行的持续集成服务往往会消耗大量的磁盘空间,理解哪些任务对应的哪些文件消耗了多少磁盘空间,对持续集成服务的维护来说是至关重要。

 

默认情况:Hudson使用用户目录下的.hudson/目录作为工作目录

改变该目录,设置环境变量HUDSON_HOME,例如,设置为D:\tools\_data\hudson

一个典型的Hudson工作目录:

*.xml

war

users

userContent

updates

plugins

jobs

 

  最重要的就属jobs子目录,



 

 这里包含了所有Hudson的任务配置、每个任务的工作区、构建历史等信息

每个任务都会包含如config.xml、nextBuildNumber、scm-polling.log等文件,其中config.xml包含了该任务的所有配置

每个任务目录下会包含一个workspace子目录,这就是该任务的工作区,这里有最近一次构建所包含的源代码及相关输出

任务目录下有一个builds子目录,该目录包含了所有Hudson记录的历史构建,每个构建对应了一个目录,目录以发生时间命名

 -------------------------------------------------------------------------------------------------------------------------

@author Free Coding http://ln-ydc.iteye.com

http://ln-ydc.iteye.com/admin/blogs/1833031

 

  • 大小: 26.3 KB
  • 大小: 24.7 KB
  • 大小: 41.3 KB
  • 大小: 9.4 KB
  • 大小: 23.5 KB
  • 大小: 29.9 KB
  • 大小: 13.2 KB
  • 大小: 23.4 KB
  • 大小: 44.3 KB
  • 大小: 30.7 KB
  • 大小: 22 KB
  • 大小: 8.5 KB
  • 大小: 112.9 KB
  • 大小: 13.8 KB
  • 大小: 39.6 KB
  • 大小: 20 KB
分享到:
评论

相关推荐

    Maven入门实战笔记02-基础(2)

    【标题】"Maven入门实战笔记02-基础(2)" 涉及的主要知识点是Maven的基础使用,包括项目的创建、配置文件的理解以及依赖管理等。Maven是一款强大的Java项目管理和集成工具,它帮助开发者统一构建过程,管理项目的依赖...

    Maven3实战笔记01环境配置与使用入门

    - **持续集成**:Maven与 Jenkins、Git 等工具结合,实现自动化构建和部署。 通过以上介绍,我们可以看到Maven3为Java开发提供了强大的支持,简化了项目的构建和管理流程。学习和掌握Maven,对于提升开发效率和团队...

    SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】的课程主要关注如何将Spring Boot与Apache Shiro框架结合起来,实现高效的安全管理。Spring Boot是Spring框架的一个简化版本,旨在提高开发效率,减少配置工作,同时提供了很...

    JUnit入门笔记~

    这篇入门笔记将带你深入了解JUnit的基本概念、使用方法以及其在实际开发中的应用。 **一、JUnit简介** JUnit是一个开源的、基于Java的测试框架,它简化了对代码进行单元测试的过程。通过JUnit,开发者可以快速地...

    2.2 SpringBoot与Shiro整合-权限管理实战-课堂笔记.docx

    【SpringBoot与Shiro整合-权限管理实战】 在本文中,我们将探讨如何将Spring Boot与Apache Shiro框架整合,以实现高效且灵活的权限管理系统。首先,我们需要了解这两个框架的基本概念。 **Spring Boot框架简介** ...

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip 章节笔记 第1章-课程介绍及项目框架搭建 知识点 使用spring boot 搭建项目基础框架 使用Thymeleaf做页面展示,封装Result统一结果 集成 mybatis + ...

    springboot学习笔记(史上最全)

    **SpringBoot学习笔记** SpringBoot是由Pivotal团队开发的一款基于Java的轻量级框架,旨在简化Spring应用的初始搭建以及开发过程。它通过自动配置、起步依赖和运行时嵌入式服务器,使得开发者能够快速地创建独立的...

    笔记CoderEsky

    【笔记CoderEsky】是一个与编程相关的学习资料集合,尤其关注Java这门广泛使用的编程语言。这个压缩包可能包含了各种笔记、代码示例、学习指南和其他有助于深入理解Java编程的知识资源。由于描述部分未提供具体信息...

    Java Web框架技术笔记

    1. **Spring开发环境准备**:首先,学习者需要安装和配置JDK 1.8,使用IntelliJ IDEA作为集成开发环境,并熟悉Maven进行项目管理和jar包管理。对于数据库管理,MySQL和Navicat是常用的工具。前端部分,Node.js和Vue....

    Eclipse开发学习笔记

    《Eclipse开发学习笔记》这本书涵盖了Eclipse的基础知识、高级特性以及实战技巧,是初学者入门和进阶的良好资源。通过学习,读者不仅可以掌握Eclipse的基本操作,还能了解到如何利用Eclipse进行高效开发,以及如何...

    SSM笔记和代码.rar

    2. **实战代码**:这部分可能包含了一个或多个实际的SSM项目案例,涵盖了从环境搭建、配置文件编写、Maven依赖管理、DAO层、Service层、Controller层的实现,一直到项目的部署和运行。这些代码示例可以帮助开发者...

    ibatis学习笔记(一)

    通过阅读这份笔记,读者应该能够掌握Ibatis的基本用法,并具备初步的实战能力。对于深入学习,还可以研究Ibatis的高级特性,如结果映射的复杂配置、缓存机制以及MyBatis Generator等工具的使用。

    开发过程中常用学习资源网站

    - **mavenRepository**:查找和管理Java依赖的Maven仓库。 - **thymeleaf**:Thymeleaf是一个用于Java应用的现代服务器端模板引擎。 - **Springboot中文文档**:Spring Boot的官方中文文档,方便学习和参考。 - ...

    DIO-Bootcamp-Inter-Java-Developer:DIO-数字创新一号(新兵训练营)

    【压缩包子文件的文件名称列表】:“DIO-Bootcamp-Inter-Java-Developer-master”通常代表这是一个Git仓库的克隆或下载,其中可能包含训练营的所有资源,如源代码、笔记、教程、练习项目和解决方案等。学员可以通过...

    training2020

    14. **持续集成/持续部署(CI/CD)**:Jenkins、GitLab CI/CD等工具可以帮助实现代码的自动化构建和部署,提高开发效率和产品质量。 在"training2020-master"这个目录下,很可能是该项目的源代码仓库,包含了各个主题...

Global site tag (gtag.js) - Google Analytics