使用Hudson进行持续集成.docx

上传人:b****1 文档编号:12521806 上传时间:2023-04-19 格式:DOCX 页数:42 大小:2.60MB
下载 相关 举报
使用Hudson进行持续集成.docx_第1页
第1页 / 共42页
使用Hudson进行持续集成.docx_第2页
第2页 / 共42页
使用Hudson进行持续集成.docx_第3页
第3页 / 共42页
使用Hudson进行持续集成.docx_第4页
第4页 / 共42页
使用Hudson进行持续集成.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

使用Hudson进行持续集成.docx

《使用Hudson进行持续集成.docx》由会员分享,可在线阅读,更多相关《使用Hudson进行持续集成.docx(42页珍藏版)》请在冰豆网上搜索。

使用Hudson进行持续集成.docx

使用Hudson进行持续集成

使用Hudson进行持续集成

1Hudson简介

Hudson是一款持续集成的工具,这里介绍它的一项最基本的功能。

Hudson可以集成ANT或MAVEN来编译所有代码,执行JUnit测试,并且生成测试报告。

准确的说,Hudson是一个集成的平台,里面的功能都是靠插件来实现的。

当然也可以使用自己写脚本来完成此功能。

并且脚本也可以完成自动发布的功能。

以前做持续集成,都是自己写shell脚本实现的,原理很简单,svn更新代码,使用ant编译和打包以及单元测试,当然,这些都是通过shell脚本进行控制,然后也是通过shell进行部署,一个shell脚本就搞定了一切,其实想想,功能也蛮强的,不过就是需要写shell脚本,不是所有人都清楚如何写shell脚本的,另外,跨服务器部署时,为了不输入密码,需要建立ssh密钥认证,总之,需要有一定的linux基础。

1.1Hudson是什么?

Hudson是一个可扩展的持续集成引擎。

主要用于:

1.持续、自动地构建/测试软件项目。

2.监控一些定时执行的任务。

Hudson拥有的特性包括:

易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。

易于配置-所有配置都是通过其提供的web界面实现。

集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。

生成JUnit/TestNG测试报告。

分布式构建支持-Hudson能够让多台计算机一起构建/测试。

文件识别-Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。

a)Hudson的由来

目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。

它是一种实践,旨在缓和和稳固软件的构建过程。

并且能够帮助您的开发团队应对如下挑战:

∙软件构建自动化:

使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者针对某一特定事件,就开始对目标软件进行一次构建过程。

想想吧,尤其您从头到尾构建一个构件的时候,这个构建过程应该不会是局限于某一特定IDE、电脑或者个人的。

∙构建可持续的自动化检查:

CI系统能够设定成持续地执行新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。

这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力(说直接一点也是钱啊,呵呵)。

∙构建可持续的自动化测试:

一个构建检查的扩展部分,这个过程确保当新增或修改代码时不会导致预先制定的一套测试在构建构件后失败。

构建检查和测试一样,失败都会触发通知单(Email,RSS等等)给相关的当事人,告知对方一次构建或者一些测试失败了。

∙生成后后续过程的自动化:

一旦自动化检查和测试的构建已经完成,一个软件构件的构建周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。

这样,构件才能更迅速地提供给用户使用。

       实现一个CI服务器你需要的最低要求是,一个比较容易获取的源代码仓库(包含源代码),一套构建脚本和程序,一系列围绕构件构建的可执行测试。

下图概括了CI系统的基本结构。

图1.CI系统的基本结构

    该系统的各个组成部分是按如下顺序来发挥作用的:

1.开发者检查新增和修改到源代码仓库后的代码。

2.CI服务器会为每一个项目创建了一个单独的工作区。

当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区,哪里构建就执行哪里。

3.CI服务器会在新近创建或者更新的工作区内执行构建过程。

4.一旦构建完成,CI服务器就会在一个新的构件中选择性地执行原先定义的一套测试。

如果构建失败,相关责任人将会通过电子邮件、即时短信或者其他的方式获取到(失败)通知。

5.如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)和/或存储为软件仓库中的一个新版本。

这个如软件仓库可以是CI服务器的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像J、SourceForge分发的一个有效网址。

源代码仓库和构件仓库是可以分开的,实际上它可以利用一些根本没有包含任何源代码控制系统(CVS、SVN、CSS等等)的CI服务器。

6.CI服务器通常会用某种控制台来进行项目的配置和调试,并且根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

而Hudson就是这么一个CI服务器。

它最初是由KohsukeKawaguchi编写的,他是一名Sun工程师,在2005年2月宣布释放了他的博客。

现在已经有大约154个版本。

 

  以下的一些是使用hudson的理由:

∙它是所有CI产品在安装和配置上中最简单的。

∙基于Web的用户界面非常友好、直观和灵活,在许多情况下,还对需单独配置的部分提供了基于AJAX的即时反馈。

∙Hudson是基于java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。

∙Hudson本身是一个很简洁的组件,但它提供了一组很明确和可扩展API的Hudson组件。

这批组成一个大的类库的Hudson组件反过来又丰富了Hudson的功能;它们都是开源的,而且它们可以直接通过Hudson的控制台来进行安装。

b)Hudson的目标

Hudsonn的主要目标是监控软件开发流程,快速显示问题,让开发人员马上解决问题。

所以能保证开发人员以及相关人员省时省力提高开发效率。

CI服务器在整个开发过程中的主要作用是控制:

当服务器在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。

如果构建失败了,那么CI服务器将通知相关方面,然后继续监视存储库。

它的角色看起来是被动的;但是,它是快速反映问题的关键。

特别它在和maven2的整合上具有以下优点:

∙Hudson一切配置都可以在友好的界面上完成,包括其自身的配置和项目特有的配置,值得注意的是有些配置如MAVEN_HOME和EmailServer,只需要配置一次,所有的项目就都能用了。

XML?

不再需要了,不过如果坚持,也可以通过XML配置。

∙支持Maven的模块(Module),Hudson对Maven2做了优化,因此它能自动识别Module,每个Module本身也是一个buildjob。

相当灵活。

∙测试报告聚合,所有模块的测试报告都被聚合在一起了,结果一目了然,使用诸如CruiseControl其他CI,这几乎是件不可能完成的任务。

∙构件指纹(artifactfingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。

2安装与启动Hudson

hudson的安装很简单,就是一个war包,丢到tomcat中就行,详细的说明请参考下面的链接

英文原文:

中文翻译:

1.下载hudson.war。

在下载最新hudson以及插件。

2.在你的机器上创建下面三个目录。

备注:

hudsonhome是所有数据的存放目录,hudsontmp是临时文件目录,hudson是web服务器的目录。

httpPort是hudson服务的端口。

3.将hudson.war拷贝到hudson的目录下。

4.创建启动文件使用tomcat启动。

5.运行./start.sh。

通过http:

//10.1.101.159:

8082/hudson-3.1.2/就可以访问hudson了。

使用tomcat作为hudson的容器时,选择系统管理后会出现如下提示:

Yourcontainerdoesn'tuseUTF-8todecodeURLs.Ifyouusenon-ASCIIcharactersasajobnameetc,

thiswillcauseproblems.SeeContainersandTomcati18nformoredetails.

意思是tomcat容器没有使用UTF-8编码,所以不能使用中文作为任务名称,可以在tomcat中进行配置。

connectionTimeout="20000"

redirectPort="8443"URIEncoding="UTF-8"/>

1.重新启动hudson。

重启TOMCAT即可。

备注:

关闭TOMCAT即可关闭hudson。

当然hudson也有强大的功能.

3安装hudson插件。

hudson的好用基本体现在其众多而强大的插件上,在“系统管理”中可以找到“插件管理,

基本插件

为了更好的使用hudson,还需要安装一些插件,在“可选插件”中进行选择:

DeploytocontainerPlugin:

使用其进行war包部署,支持tomcat,jboss,glassfish

HudsonSCPpublisherplugin:

如果要跨服务器部署,就需要安装该插件,其使用scp的方式将文件从一个服

务器拷贝到另一台服务器

HudsonEmailExtensionPlugin:

如果希望部署完成后能将结果以邮件的形式进行通知,可以安装该插件

2.点击【系统管理】,再点击【管理插件】。

在【高级】选项卡里上传插件。

3.下载相应的核心插件

点击下面的install然后等一段时间.

显示打勾的状态就是这个插件已经安好了.

一定要下载那相SCP的插件.

 

4.下载插件:

MAVEN,SVN,SONAR等插件

这里是安装好的插件的列表:

有一些插件在available里安装了,

还可以在Updates里升级到最新版.

比如上图的.

4hudson与配置使用

Hudson有大量的插件,每一个插件都有其相应的配置.hudson本身也有一些是它自己的配置.好在hudson大部分都有现成的插件与相应的软件配合.

hudson的总体配置,都是在“系统管理”中进行配置的,hudson“系统管理”提供了如下功能,除了“系统

设置”以外,其它的功能都比较简单:

●系统设置

全局设置&路径,这是hudson最核心的功能,jdk,ant,maven,scp,邮件等等,都

是在这里设置的。

●读取设置

放弃当前内存中所有的设置信息并从配置文件中重新读取仅用于当您手动修改配置文

件时重新读取设置。

●管理插件

添加、删除、禁用或启用Hudson功能扩展插件。

●系统信息

显示系统环境信息以帮助解决问题。

该功能会列出系统属性,环境变量以及Plugins信

息。

●系统日志

系统日志从java.util.logging捕获Hudson相关的日志信息。

●负载统计

检查您的资源利用情况,看看是否需要更多的计算机来帮助您构建。

●HudsonCLI

从您命令行或脚本访问或管理您的Hudson。

感兴趣的话可以通过命令行尝试一下

●脚本命令行

执行用于管理或故障探测或诊断的任意脚本命令。

这就是Groovyscripts。

●管理节点

添加、删除、控制和监视系统运行任务的节点。

●管理用户

创建/删除/修改Hudson用户,系统的登录用户都是在这里建立的。

●准备关机

停止执行新的构建任务以安全关闭计算机

2.2配置全局设置。

1.点击【系统管理】,再点击【系统设置】。

首先,在JDK区域中,单击新增JDK按钮。

取消选中自动安装复选框,提供一个易于记忆的名称(我建议使用JDK的版本作为名称)并提供JDK的安装位置。

2.接下来,重复上述过程以添加一个MAVEN安装。

首先先给一个MAVEN的全局设定,就是你的私服的地址.用户名,密码.

不设定这些的话,MAVEN会去官网下载JAR包.而且,你的私服上的JAR包也引不进来.编译会出现错误.

当然你也可以使用自动安装

如果选择自动安装只要给一个名字就可以了.

3.接下来,重复上述过程以添加一个SVN安装。

因为hudson与svn的结合结在是太好了.所有,你不必输入过多的信息.当然,有可能在你第一次down代码的时候,会输入密码,但是,以后也不会出现.

只需要设定你要get的版本就可以了.

4.接下来,重复上述过程以添加一个SONAR安装。

5.最后配置邮件。

点击【保存】。

2.3HUDSON_HOME

Hudson需要一些磁盘空间来执行构建和归档,所以hudson启动后,会自动建立一个HUDSON_HOME目录,

该目录用于保存hudson的相关配置信息以及提供一个构建和归档的空间。

默认情况下,HUDSON_HOME会在当前用户的家目录下建立,名称为.hudson,

比如在windows下:

C:

\DocumentsandSettings\username\.hudson

在linux下:

~/.hudson

你也可以通过如下方式修改HUDSON_HOME的位置:

在hudson的web.xml中找到HUDSON_HOME,默认value为空值,将其设置为你希望的路径,然后重启hudson。

修改一个已经配置过的Hudson的HOME路径,如果希望保留所有配置信息,这需要彻底停掉Hudson,然后把

老的HUDSON_HOME挪到新HUDSON_HOME下,设置新的HUDSON_HOME,最后重启Hudson。

下面是一个典型的HUDSON_HOME目录结构:

 

HUDSON_HOME就是一个目录,所以你可以随时对其进行备份,如果希望hudson恢复到之前的某一次备份,

直接使用备份覆盖现有的HUDSON_HOME即可,当然,覆盖后要记得重启hudson。

不同的hudson间,如果其环境和版本相同,也可以使用将一个配置好的hudson的HUDSON_HOME覆盖掉另

一个HUDSON_HOME,实现快速配置,如果不希望保留Job信息,可以不复制jobs下的内容。

2.4hudson--URL选项

hudson为我们提供了一些通过url快速执行的功能

http:

//[hudson-server]/[command]

[command]可以是:

•exit:

关闭Hudson,不建议使用这个功能,它会关闭hudson所在的服务器。

•restart:

重启Hudson

script:

执行Groovyscripts,这个功能挺有用的,如果你熟悉Groovy,倒是可以尝试下。

关于hudson的Groovyscripts,可以参考该地址:

http:

//wiki.hudson-ci.org/display/HUDSON/

Hudson+Script+Console

2.5hudson--配置邮件

如果希望在构建完成后将构建结果以邮件的形式发送给相关的用户,推荐安装HudsonEmailExtensionPlugin

插件,它比系统默认的邮件设置的功能要强大,可以设置邮件标题及内容的格式,也可以指定触发邮件的情

况,该插件安装完成后可以在“系统设置”中看到如下配置项:

ExtendedE-mailNotification

OverrideGlobalSettings如果勾选上,就会覆盖job中的邮件配置。

SMTPserver:

邮件服务器地址,可以不填,不填则使用javamail发送,如果在公司内部使用,可以使用内网邮

箱。

DefaultuserE-mailsuffix:

缺省的邮件后缀,例如,如果这里设定了@acme.org,那么用户foo的默认邮件地址

为foo@acme.org

SystemAdminE-mailAddress:

就是发送邮件的用户,这个用户不要求一定存在。

其它配置项默认即可,这里注意一下,在DefaultContent中可以增加一下内容,比如构建日志$BUILD_LOG,

具体的配置详见ContentTokenReference后面的那个帮助Helpforfeature:

ContentTokenReference

保存后就配置好了。

这样在建立job时,可以在job设置里指定邮件的收件人和触发邮件的情况。

具体如下,在job的设置中找到Post-buildActions,在其中找到EditableEmailNotification,勾选上。

GlobalRecipientList:

收件人列表,以英文逗号分隔。

其它配置项与系统设置中相同。

重点在“Advanced”

Advanced...

点击后,在AddaTrigger中增加触发邮件的情况。

2.6hudson--scp设置

如果是远程部署,你就会需要一个scp插件,可以在hudson的插件管理中进行安装,这个插件就是Hudson

SCPpublisherplugin。

插件安装完成后,我们就可以在“系统管理”--“系统设置”中进行配置,具体如下:

找到SCPrepositoryhosts

点击add,出现SCPsites配置界面

Hostname:

远程服务器IP

Port:

端口

RootRepositoryPath:

根目录,这个目录必须是存在的,比如:

/usr/local,该项可以不填

UserName:

登录远程服务器的用户名称

Password/Passphrase:

密码

Keyfile:

也可以不填用户名和密码,而使用一个密钥文件

ok,这样就配置完成了。

可以通过add,配置多个远程站点。

之后,在job设置中,我们就可以进行如下配置:

在Post-buildActions中找到

PublishartifactstoSCPRepository,勾选上。

SCPsite:

选择scp站点

点击add

Source:

要发送的文件,该文件的路径必须相对于job的工作区目录,既HUDSON_HOME/jobs/$jobname/

workspace下的目录和文件,比如**/build/test-reports/*.xml

Destination:

目的地目录,在linux环境下,如果以“/”开头,则不会在前面增加RootRepositoryPath

,否则就会增加。

如果该目录不存在会自动创建。

可以配置多个Source/Destination。

点击保存后完成配置。

2.7hudson--build配置

在每个job中,我们可以指定其构建方式,比如是通过ant或maven构建,还是通过shell或bat脚本构建,亦或

是他们组合在一起完成一次构建,我们可以指定他们的构建顺序。

举个例子,我使用的集成方式:

svn+ant+tomcat。

一。

指定svn地址

在SourceCodeManagement中,选择Subversion

我使用RepositoryURL:

指定代码的url地址。

代码会下载到JOB_WORKSPACE下。

如果svn地址是需要安全认证的,可以点击“RepositoryURL”右侧的帮助Helpforfeature:

RepositoryURL,从帮助中找到“thislink”并点击,出现如下配置界面:

在这里输入svn地址,并选择你的认证类型。

点击ok即可完成配置

选择Useupdate:

这表示在构建时使用代码更新的方式,而不是重新下载全部代码,这样可以减少构建的时

间。

这样,不是每次都全部更新.当然,默认的情况下,就是这种更新方式.

2.8设置有更新代码就BUILD

指定一个BuildTriggers

这里我选择PollSCM:

5****

每隔5分钟检查一次svn,如果有代码更新则进行自动构建。

●Build配置

如果是使用MAVEN就比较简单了.

第一MAVEN的插件装全了.

第二项目里存在pom文件.

然后,在创建JOB的时候,直接指定MAVEN的JOB就行了.

●部署发布

之后Deploywar/eartoacontainer配置tomcat发布即可。

ok,这样我们就完成了一个简单的构建配置.

2.9hudson--安全设置

hudson默认是不需要登录既可以使用的,如果希望只有登录用户我们才能访问,可以在“系统管理”--“系统

设置”中进行配置。

找到启用安全,勾选上。

JNLP节点代理的TCP端口:

选择禁用

访问控制--安全域

选择“Hudson专有用户数据库”:

使用Hudson自己的用户列表验证,而不是外部系统代理.这适用于没有用户

数据库小范围的设定.基本上这个就比较好用,建立的用户配置信息保存在HUDSON_HOUME/users下。

个人

感觉这种配置方式是比较方便的。

允许用户注册:

如果勾选上,则表示允许用户自己注册一个新账号,通过点击页面右上角的"注册"

链接进行操作.但如果你想禁止任意注册新账号,而使用严格的方式控制账号创建,那么取消这个选框。

当这个选

框被取消,就必须使用系统管理员来创建账号.

这里说明一下,如果授权策略选择的是“安全矩阵”或者“项目矩阵授权策略”,在注册用户时,如果与注册

用户名同名的角色没有事先创建,该用户是没有相应的访问权限的。

接着说一下授权策略,这里只说一下“安全矩阵”和“项目矩阵授权策略”,其它的都比较好理解,同时授权

也过于简单,可以根据实际情况进行选择。

如果选择安全矩阵,出现如下视图:

默认会有一个匿名用户角色,表示未登录用户的访问权限,你可以不授权或只授予read权限。

你可以为角色设置全局,job,视图等的不同权限。

添加用户/组:

输入一个名称,比如admin,然后点击添加,这里实际上是先建立一个角色,因为这时用户并不

存在,如下所示:

这时admin前面有一个红色的减号图标,表示用户尚不存在。

这里我们授予admin管理员权限,注意,必须先建立一个管理员角色。

接着点击保存。

如果我们没有勾选“允许用户注册”,则在保存后会进入到用户注册页面,如果勾选了“允许用户注册”,则

会立刻退出系统,这时我们可以在页面右上角找到“注册”,自己注册一个账号。

注意,无论哪种方式,我们这里必须要填注册一个admin用户(与角色名称相同),否则我们将无法管理

hudson。

注册完成后会自动登录,我们再进入“系统管理”--“系统设置”中,会看到admin前面的变成了一个“小人图

标”,表示用户已经创建完成。

再次强调一下,无论是否允许用户自己注册,这里都需要管理员先建立好角色,否则是无法正常使用系统的。

管理员可以通过“系统管理”中的“用户管理”

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1