From a3c0cc344c4b933c2e4d8ea604731f488b2ce28c Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Wed, 23 Jun 2010 05:11:24 +0000 Subject: [PATCH] =?UTF-8?q?Hudson=E4=B8=BB=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hudson 目标与由来。 +YUCHENG HU+ git-svn-id: https://svn.code.sf.net/p/hawebs/svn@381 a2543c7e-f6e9-4f8a-8bff-1ffc34733512 --- .../hudson/trunk/out/tutorials/docs/dita.list | 14 +-- .../out/tutorials/docs/dita.xml.properties | 12 +- .../tutorials/docs/images/introduction_ci.jpg | Bin 0 -> 39440 bytes .../tasks/introduction/hudson_origin.html | 106 ++++++++++++++++++ .../docs/tasks/introduction/introduction.html | 3 + .../hudson/trunk/out/tutorials/docs/toc.html | 1 + .../trunk/src/images/introduction_ci.jpg | Bin 0 -> 39440 bytes .../tasks/introduction/hudson_origin.dita | 80 +++++++++++++ .../trunk/src/tutorials/tutorials.ditamap | 1 + 9 files changed, 204 insertions(+), 13 deletions(-) create mode 100644 hadocs/hudson/trunk/out/tutorials/docs/images/introduction_ci.jpg create mode 100644 hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/hudson_origin.html create mode 100644 hadocs/hudson/trunk/src/images/introduction_ci.jpg create mode 100644 hadocs/hudson/trunk/src/tutorials/tasks/introduction/hudson_origin.dita diff --git a/hadocs/hudson/trunk/out/tutorials/docs/dita.list b/hadocs/hudson/trunk/out/tutorials/docs/dita.list index 5f682123..fd322c08 100644 --- a/hadocs/hudson/trunk/out/tutorials/docs/dita.list +++ b/hadocs/hudson/trunk/out/tutorials/docs/dita.list @@ -1,12 +1,12 @@ -#Tue Jun 22 15:29:34 EDT 2010 +#Wed Jun 23 01:08:48 EDT 2010 copytosourcelist= -hreftargetslist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita +hreftargetslist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita fullditatopicfile=fullditatopic.list fullditamapandtopicfile=fullditamapandtopic.list -fullditatopiclist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita -fullditamapandtopiclist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita,tutorials.ditamap +fullditatopiclist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita +fullditamapandtopiclist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita,tutorials.ditamap hrefditatopicfile=hrefditatopic.list -hrefditatopiclist=tasks/info/hacopyright.dita,tasks/introduction/installation.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita +hrefditatopiclist=tasks/info/hacopyright.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/installation.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita user.input.file=tutorials.ditamap subtargetsfile=subtargets.list fullditamapfile=fullditamap.list @@ -23,11 +23,11 @@ conreflist= resourceonlyfile=resourceonly.list imagefile=image.list resourceonlylist= -imagelist=images/introduction_webstart.gif,images/introduction_hudson_01.png,images/halogo.jpg +imagelist=images/introduction_webstart.gif,images/introduction_hudson_01.png,images/halogo.jpg,images/introduction_ci.jpg htmlfile=html.list htmllist= canditopicsfile=canditopics.list -canditopicslist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita +canditopicslist=tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita keyreffile=keyref.list subjectschemefile=subjectscheme.list keyreflist= diff --git a/hadocs/hudson/trunk/out/tutorials/docs/dita.xml.properties b/hadocs/hudson/trunk/out/tutorials/docs/dita.xml.properties index ddf973ab..bf543244 100644 --- a/hadocs/hudson/trunk/out/tutorials/docs/dita.xml.properties +++ b/hadocs/hudson/trunk/out/tutorials/docs/dita.xml.properties @@ -3,13 +3,13 @@ SYSTEM "http://java.sun.com/dtd/properties.dtd"> - tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita + tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita fullditatopic.list fullditamapandtopic.list - tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita - tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita,tutorials.ditamap + tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita + tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita,tutorials.ditamap hrefditatopic.list - tasks/info/hacopyright.dita,tasks/introduction/installation.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita + tasks/info/hacopyright.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/installation.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita tutorials.ditamap subtargets.list fullditamap.list @@ -26,11 +26,11 @@ resourceonly.list image.list - images/introduction_webstart.gif,images/introduction_hudson_01.png,images/halogo.jpg + images/introduction_webstart.gif,images/introduction_hudson_01.png,images/halogo.jpg,images/introduction_ci.jpg html.list canditopics.list - tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita + tasks/info/hacopyright.dita,tasks/info/apachelicense.dita,tasks/introduction/hudson_origin.dita,tasks/introduction/what_hudson.dita,tasks/introduction/hudson_features.dita,tasks/introduction/installation.dita,tasks/introduction/hudson_best_practices.dita,tasks/introduction/introduction.dita,tasks/introduction/test_drive.dita keyref.list subjectscheme.list diff --git a/hadocs/hudson/trunk/out/tutorials/docs/images/introduction_ci.jpg b/hadocs/hudson/trunk/out/tutorials/docs/images/introduction_ci.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08416f1aa8ac55e1f2b7be88a9b434091ff9baeb GIT binary patch literal 39440 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 R;u4|E1(N?Ms^$CW{{uJimQerz literal 0 HcmV?d00001 diff --git a/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/hudson_origin.html b/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/hudson_origin.html new file mode 100644 index 00000000..4dcecf6e --- /dev/null +++ b/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/hudson_origin.html @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + +Hudson 的由来与目标 + + + + +

Hudson 的由来与目标

+ + +
+
持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战:
    +
  • 软件构建自动化

    使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者针对某一特定事件,就开始对目标软件进行一次构建过程。想想吧,尤其您从头到尾构建一个构 件的时候,这个构建过程应该不会是局限于某一特定IDE、电脑或者个人的。

    +
  • + +
  • 构建可持续的自动化检查

    CI系统能够设定成持续地执行新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代 码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。

    +
  • + +
  • 构建可持续的自动化测试

    一个构建检查的扩展部分,这个过程确保当新增或修改代码时不会导致预先制定的一套测试在构建构件后失败。构建检查和测试一样,失败都会触发通知单 (Email,RSS等等)给相关的当事人,告知对方一次构建或者一些测试失败了。

    +
  • + +
  • 生成后后续过程的自动化

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

    +
  • + +
+
+ +

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

+ +

下图概括了CI系统的基本结构:CI 流程图

+ +
该系统的各个组成部分是按如下顺序来发挥作用的
    +
  1. 开发者检查新增和修改到源代码仓库后的代码。
  2. + +
  3. CI服务器会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区,哪里构建就执行哪里。
  4. + +
  5. CI服务器会在新近创建或者更新的工作区内执行构建过程。
  6. + +
  7. 一旦构建完成,CI服务器就会在一个新的构件中选择性地执行原先定义的一套测试。如果构建失败,相关责任人将会通过电子邮件、即时短信或者其他的 方式获取到(失败)通知。
  8. + +
  9. 如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器) 和/或存储为软件仓库中的一个新版本。这个如软件仓库可以是CI服务器的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、SourceForge分发的一个有效网址。源代码仓库和构件仓库是可以分开的,实际上它可以利用一些根本没有包含任何源代码控制系统(CVS、SVN、 CSS等等)的CI服务器。
  10. + +
  11. CI服务器通常会用某种控制台来进行项目的配置和调试,并且根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
  12. + +
+
+ +

而 Hudson 就是这么一个CI服务器。它最初是由Kohsuke Kawaguchi编写的,他是一名Sun工程师,在2005年2月宣布释放了他的博客。现在已经有大约154个版本。

+ +
以下的一些是使用hudson的理由:
    +
  • 它是所有CI产品在安装和配置上中最简单的。
  • + +
  • 基于Web的用户界面非常友好、直观和灵活,在许多情况下,还对需单独配置的部分提供了基于AJAX的即时反馈。
  • + +
  • Hudson是基于java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
  • + +
  • Hudson本身是一个很简洁的组件,但它提供了一组很明确和可扩展API的Hudson组件。这批组成一个大的类库的Hudson组件反过来又丰富了Hudson的功能;它们都是开源的,而且它们可以直接通过Hudson的控制台来进行安装。
  • + +
+
+ +

Hudsonn的主要目标是监控软件开发流程,快速显示问题,让开发人员马上解决问题。所以能保证开发人员以及相关人员省时省力提高开发效率。

+ +

CI 服务器在整个开发过程中的主要作用是控制:当服务器在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么 CI 务器将通知相关方面,然后继续监视存储库。它的角色看起来是被动的;但是,它是快速反映问题的关键。

+ +
特别它在和maven2的整合上具有以下优点:
    +
  • Hudson一切配置都可以在友好的界面上完成,包括其自身的配置和项目特有的配置,值得注意的是有些配置如MAVEN_HOME和Email Server,只需要配置一次,所有的项目就都能用了。XML?不再需要了,不过如果坚持,也可以通过XML配置。
  • + +
  • 支持Maven的模块(Module),Hudson对Maven2做了优化,因此它能自动识别Module,每个Module本身也是一个 build job。相当灵活。
  • + +
  • 测试报告聚合,所有模块的测试报告都被聚合在一起了,结果一目了然,使用诸如CruiseControl其他CI,这几乎是件不可能完成的任务。
  • + +
  • 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。
  • + +
+
+ +
+ +
+ +
+ + + \ No newline at end of file diff --git a/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/introduction.html b/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/introduction.html index 6ea2f112..66d08af7 100644 --- a/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/introduction.html +++ b/hadocs/hudson/trunk/out/tutorials/docs/tasks/introduction/introduction.html @@ -11,6 +11,7 @@ + @@ -43,6 +44,8 @@