`
wdhdd889
  • 浏览: 151836 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

向CruiseControl中加入一个新项目 - CruiseControl step by ste

    博客分类:
  • java
阅读更多
好,现在我们已经在自己的机器上建立了一个持续集成服务器,并初步了解它的配置文件。在本文中,我们就要把自己的项目加到其中。 做为一个入门示例,我们先要陈述一下假设条件,以便我们快速推进我们的部署过程。


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

一、 准备工作(请确认一下)

1、你的项目代码放在Google Code上面(Google Code用的是SVN ),你的项目名称是yourprojectname,项目的源文件就放在trunk目录下。那么,其svn update的链接如下:http://yourprojectname.googlecode.com/svn/trunk/。CruiseControl只会更新文件,不会修改源代码,所以匿名检出就可以了。

2、你的项目是一个JAVA项目,用ANT进行构建,构建文件名为build.xml,放在项目的根目录上,默认的ant task名为all。确保文件中其中所有路径都是相对于项目根目录的,将其Copy到任何目录下,ant all都可以正确运行。(我们的主要目的是建立环境,使其在今后的开发工作中可以发挥作用,而不是要发现我们构建脚本中错误。)


3、你的CruiseControl工作目录是C:/CruiseControl,方便起见,我们以下将用${CC_HOME}代替。

4、你的logs目录是${CC_HOME}/logs。如果你没有独自改动配置的话,它的位置就如前所述。

5、你的projects目录是${CC_HOME}/projects。如果你没有独自改动配置的话,它的位置就如前所述。

6、你的artifacts目录是${CC_HOME}/artifacts。如果你没有独自改动配置的话,它的位置就如前所述。




二、加入项目

1、手工检出文件:

确保将你的项目代码检出到${CC_HOME}/projects/yourprojectname目录下,即在该目录就是你项目的根目录,可以找到名为build.xml文件。

2、修改配置文件(添加你的项目)

将下面的代码段加入到config.xml文件中,位于<CruiseControl>节点下。




    <project name="yourprojectname"> --这里一定要与你的projects目录下的项目名相同

        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        </listeners>

        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>

        <modificationset quietperiod="30">
            <svn localWorkingCopy="projects/${project.name}"/>
        </modificationset>

        <schedule interval="300">            <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
        </schedule>

        <log>
            <merge dir="projects/${project.name}/target/test-results"/>
             <!-- 在上面一句,一定要确保构建失败后可以找到这个dir,如果没有,删除这个元素好了-->
        </log>

        <publishers>
            <onsuccess>
                <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
                <!-- 在上面一句,一定要确保你打包出来的文件名是yourprojectname.jar -->
            </onsuccess>
        </publishers>

    </project>



最终的文件如下:


<cruisecontrol>
    <project name="connectfour">

        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        </listeners>

        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>

        <modificationset quietperiod="30">
            <svn localWorkingCopy="projects/${project.name}"/>
        </modificationset>

        <schedule interval="300">
            <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
        </schedule>

        <log>
            <merge dir="projects/${project.name}/target/test-results"/>
        </log>

        <publishers>
            <onsuccess>
                <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
            </onsuccess>
        </publishers>

    </project>

    <project name="yourprojectname">

        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        </listeners>

        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>

        <modificationset quietperiod="30">
            <svn localWorkingCopy="projects/${project.name}"/>
        </modificationset>

        <schedule interval="300">
            <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
        </schedule>

        <log>
            <merge dir="projects/${project.name}/target/test-results"/>
        </log>

        <publishers>
            <onsuccess>
                <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
            </onsuccess>
        </publishers>

    </project>

</cruisecontrol>


三、看一下结果

(1) CruiseControl会自动更新这个配置文件,加载时间一般是在任何一个项目需要检查是否有更新时。

(2) 你会看到这个项目在Dashboard上首先是灰色的方块,因为这个项目还从来没有在CruiseControl上构建过,没有任何历史信息,我们称该项目为"inactive"。

(3) 过一会儿,你会看到一个环形动态图标,表示它在构建中(执行build.xml脚本)。

(4) 当环形动态图标消失时,你会看到它变成红色(如果构建失败的话)或绿色(如果构建成功的话)。

我新加的项目名是vcdstore,现在我的dashboard上有两个项目了。



小贴士:

(1) 目前CruiseControl还不支持首次自动检出代码,所以你要先把项目代码手工检出到本地。

(2) 如果你的SVN使用https方式更新代码,你一定要在命令行方式检出代码,并选择永久接受证书。

(3) CruiseControl这个分支版本不支持在UI上增加项目。

(4) 如果你在config.xml文件中把你的项目删除,却不删除它的日志的话,你在Dashboard上还是可以看到这个项目,此时它被标记为"Discontinued",表示你可以看到它的历史信息,但CruiseControl不会再构建它了。


下一篇我们将讲述CruiseControl的一些界面信息元素。


分享到:
评论

相关推荐

    CruiseControl.NET-1.8.2.0-Setup.exe

    CruiseControl.NET-1.8.2.0-Setup.exe ccnet 服务端

    CCnet的CruiseControl.NET-CCTray-1.4.1-Setup.exe

    Curisecontrol持续集成的客户端版,CruiseControl.NET-CCTray-1.4.1-Setup.exe

    CruiseControl简介及使用举例

    通过以上步骤,你就成功配置了一个基本的CruiseControl项目。当源代码有变更时,CruiseControl会自动触发构建过程,检查代码、编译项目、运行测试,并将结果展示在Web界面上。这样,开发者可以实时了解到代码更改对...

    CruiseControl使用指南.rar

    6. **向CruiseControl中加入新项目**:"CruiseControl step by step(3)"部分可能详细介绍了如何添加新的项目到CruiseControl服务器,包括项目配置文件的修改和项目构建规则的设定。 7. **了解CruiseControl的配置...

    CruiseControl.NET-1.4.4-Setup.exe

    CruiseControl.NET-1.4.4-Setup.exe

    CruiseControl-2.8.4.exe

    CruiseControl-2.8.4.exe

    cruisecontrol配置定时运行

    CruiseControl通过一个XML配置文件来定义其行为,这个文件通常被称为`cruisecontrol.xml`。在这个文件中,我们可以设置各种属性,包括构建触发器、构建步骤、通知规则等。 **1. 安装与启动CruiseControl** 在开始...

    [CruiseControl]binary安装和启动

    CruiseControl 是一个持续集成工具,用于自动化构建过程并提供实时反馈,帮助开发团队尽早发现问题。它支持多种构建工具如 Ant 和 Maven,并且可以与各种版本控制系统(如 CVS, Subversion 等)集成。 #### 二、...

    cruisecontrol+maven2配置

    CruiseControl是一个开源的持续集成工具,能够监控源代码仓库的变动,并自动触发构建和测试过程。CruiseControl版本2.5提供了丰富的特性,支持多种构建工具和测试框架。 - **目录结构**:CruiseControl的工作目录...

    CruiseControl.NET-CCTray-1.8.4.0

    CruiseControl.NET-CCTray-1.8.4.0-Setup.exe

    cruisecontrol配置文件.rar

    CruiseControl 是一个开源的持续集成工具,用于自动化软件构建、测试和部署的过程。它通过监控版本控制系统中的变更,自动触发构建任务,及时发现并解决代码集成中的问题,从而提高开发团队的效率和软件质量。本...

    持续集成之CruiseControl.rb

    CruiseControl.rb是一款开源的持续集成工具,主要用于自动化构建、测试和部署软件项目。它是由ThoughtWorks公司开发的,是CruiseControl.NET的Ruby版本,因此在Ruby社区中被广泛应用。CruiseControl.rb的核心理念是...

    CruiseControl.NET-CCTray-1.5.6804.1-Setup

    CruiseControl.NET-CCTray-1.5.6804.1-Setup

    持续集成及CruiseControl技术交流

    主题:持续集成及CruiseControl技术交流 在提升软件质量、降低...如何逐渐提升可回归性、敏捷性,这是一个永恒的话题。 适合群体 具有一定的软件研发经验 熟悉研发工作生命周期中的各个阶段 对持续集成感兴趣的人士

    CruiseControl笔记

    - **工作目录**: 在CruiseControl.net服务器上指定一个目录来存储从版本控制系统中取出的代码。 ![图 3 从 vss 取过来的 BuildTest 项目的目录结构](#) ![图 4 从 svn 取过来的 TestCCNet 项目的目录结构](#) ##...

    CruiseControl.NET

    CruiseControl.NET 是 .NET...CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。

    CruiseControl.NET-1.4-Setup

    CruiseControl.NET-1.4-Setup

    CruiseControl学习教程.pdf

    CruiseControl的核心是一个服务器,它负责监听源代码仓库的变更,并在检测到变更时触发构建过程。这个过程包括编译代码、运行单元测试以及执行其他自动化任务。CruiseControl通过XML配置文件定义其工作流程,并提供...

Global site tag (gtag.js) - Google Analytics