CruiseControl 安装 配置 教程 实例 搭建服务器 (CruiseControl + git/svn)

去下载最新的安装包,在xp下的话,直接下载exe最好了~~

CruiseControl过程简单讲就是:按照config.xml的配置,定期对配置的项目进行更新,然后自动构建(这里就需要配置用什么来获取,CVS还是SVN等),并做好每次构建的记录。

CruiseControl持续集成环境的配置安装 

    第一步:

         A、从官方网站下载最新的稳定版本(最好下载exe版本,不用配置这么多变量)

         B、下载JAVA安装包

   C、 安装代码同步工具,SVN或Git等

   第二步:解压下载的工具包,并在你的环境变量中增加环境变量    

        A、JAVA_HOME设置为你的JAVA安装目录

        B、设置系统path变量(把JDK路径,SVN和Git路径加入path变量中,并使得Svn和Git等代码管理工具可命令行调用,Git还需要配置HOME,详细见本文最后)

   第三步:直接运行CC解压目录/安装目录下的cruisecontrol.bat即可

   第四步:在你的浏览器地址栏输入:http://localhost:8080/dashboard/tab/dashboard ,如果有界面表示安装成功

   第五步:关闭cruisecontrol.bat窗口。配置config.xml,加入project,见下边介绍。

   第六步:重新运行cruisecontrol.bat。

      如果要改服务的端口,请修改安装目录下的cruisecontrol.bat。找到-jmxport 8000 -webport 8180 -rmiport 1099

      webport就是网页版监视器的端口。另外CC的exe版本会在windows中加了服务,可以用msconfig去修改启动配置。

参考这个文章,理解CruiseControl目录的结构,例如projects。

http://www.cnblogs.com/xiaocheng/archive/2009/06/21/1507755.html

参考这个文章,进行配置(config.xml和projects里边的build.xml)

http://shenzhenchufa.blog.51cto.com/730213/272575

关键是bootstrappers,设置每次schedule的build之前,该启动什么。

例如填<svnbootstrapper    localWorkingCopy="projects/${project.name}/ABC/" />,即是到localWorkingCopy目录下,执行svn -update命令来更新代码。也可以用其他的,例如Git。

然后是modificationset,具体参考上述的文章内的注释。

在config.xml中注明有什么项目,然后projects中对应放这个项目

(config.xml不配置svn信息或者其他代码同步工具的信息,初始化的时候,应该手工先在project目录中checkout那个svn项目,并设置保存密码)

具体请参考http://cruisecontrol.sourceforge.net/main/configxml.html(这里有对每个节点最官方的说明

关于config文件,这里也有一个简单的例子:

http://www.blogjava.net/qimoxuer12/articles/270896.html

可能出现的问题:

1. 如果配置后发现无法启动,右击CruiseControl.bat编辑,在最后空白处,加一行pause。这样就可以看到出错信息了。

2. 如果项目文件无法自动更新。可能是svn等代码管理工具没有配置成命令行执行。

  须确保在命令行下,svn可以使用。因为CC启动后,会通过svn -update去配置库上更新CC中的项目代码.  可以用svn --version测试是否在命令行模式下可使用。如果使用其他同步工具,例如Git,也一样,应该先在该目录尝试命令行方式获取最新代码。

  这里就需要安装subversion并配置path了,也可以简单直接安装VisualSVN Server。毕竟CC的机器同时作为SVN服务器也不错。(有人说TortoiseSVN安装后没有命令行方式,对此我不清楚,我是直接把乌龟和VisualSVN Server都安装了,所以什么都不用配置。也许CC就自带了svn,所以可以一步一步来,先装CC,看能否用svn命令,不行再装乌龟,再不行。。。)

关于SVN Server,见:http://www.cnblogs.com/kenkofox/archive/2010/10/17/1853525.html

关于CC + git,参考一下以下的配置,主要就是bootstrapper的配置了。同样先在project目录中clone出git的项目,之后CC会调用git命令行更新代码。

  1.  启动CC后,可能会出现问题,可能会停在bootstrapping不动,参考了一篇文章说法,这是因为通过CC启动的git不能访问到SSH引起的。需要在系统变量中,添加HOME,设置为用户目录C:\Documents and Settings\XXXX。同时,还要在path中加入git的路径,让git能在CMD中使用(右击我的电脑,属性,高级,环境变量)

      2.  注意路径问题。localWorkingCopy指定的路径必须正好是Git项目的目录(内有“.git”隐藏目录)。因为Git的clone命令需要先指定一个空目录,所以这里需要注意一下,别指定为父目录。

      3.  !!!初始化项目目录一定要用clone命令,不要用pull什么的。

<?xml version="1.0" encoding="UTF-8"?>
<cruisecontrol>
 
    <project name="your_project" buildafterfailed="false">
        <propertyfilelabelincrementer propertyfile="projects/${project.name}/source/build.number"
                                      propertyname="build.number"
                                      preBuildIncrementer="true" />
 
        <property file="projects/${project.name}/source/config.properties" />
 
        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
        </listeners>
 
        <bootstrappers>
            <gitbootstrapper localWorkingCopy="projects/${project.name}/source" />
        </bootstrappers>
 
        <modificationset quietperiod="60">
            <git localWorkingCopy="projects/${project.name}/source/" />
        </modificationset>
 
        <schedule interval="60">
            <ant anthome="apache-ant-1.7.0"
                 buildfile="projects/${project.name}/source/build.xml"
                 target="dist">
                <property name="continuous-integration" value="true" />
            </ant>
        </schedule>
 
        <log dir="logs/${project.name}">
            <merge dir="projects/${project.name}/build/logs/"/>
        </log>
 
       ......
 
   </project>
 
</cruisecontrol>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏weixuqin 的专栏

Django 实现网站注册用户邮箱验证功能

  我们在很多网站上都可以看到用户注册使用电子邮件激活或启用的方式。也就是说,用户在注册后填写正确的电子邮件地址,接着网站会发送一封启用电子邮件到用户设置的电子...

1062
来自专栏Python小屋

Python+django网页设计入门(8):网站项目文件夹布局

然而,问题来了,在前面的课程中创建的网站项目文件夹结构似乎不是这样的,咋办呢?要重新创建项目吗?好像很麻烦啊。如果手工调整移动文件和文件夹,那么代码里的所有引用...

902
来自专栏丑胖侠

Zookeeper之Watcher监听事件丢失分析

在上篇博客中,介绍了zookeeper客户Curator对监听事件的封装及应用——《Zookeeper开源客户端Curator之事件监听详解》在讲解部分代码实例...

5776
来自专栏腾讯云Elasticsearch Service

Elasticsearch跨集群数据迁移之离线迁移

用户在腾讯云上自建的ES集群或者在其它云厂商购买的ES集群,如果要迁移至腾讯云ES,用户可以根据自己的业务需要选择适合自己的迁移方案。如果业务可以停服或者可以暂...

1.8K8
来自专栏Jerry的SAP技术分享

nodejs,python,sublime和Eclipse的包管理器

首先安装Python运行环境Python 3.7.0:https://www.python.org/downloads/release/python-370/

1052
来自专栏云计算教程系列

如何在Ubuntu 13.10上从Binary Tarballs安装MariaDB

目前,MariaDB可以直接替代MySQL而不需要任何额外代码配置。本文将介绍如何在Ubuntu 13.10 VPS上安装MariaDB5.5.34 x86_6...

1103
来自专栏Jerry的SAP技术分享

一些Java反编译工具/源代码查看工具的介绍

有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码。那么可以尝试使用一些Java反编译工具。

2529
来自专栏苦逼的码农

Linux达人养成计划2---虚拟机下的网络配置

当然也可以选择其他模式,不过这里,我们只讲桥接模式的,至于三种模式的区别,可以自行百度一下。

1033
来自专栏Django中文社区

注销和页面跳转

当用户想切换登录账号,或者想退出登录状态时,这时候就需要注销已登录的账号。现在我们来为网站添加注销登录的功能,这个功能 Django 也已经为我们提供,我们只需...

4169
来自专栏沈唁志

在vps上搭建Linux宝塔服务器管理

6785

扫码关注云+社区