CruiseControl是CIserver的老者,诞生已是多年,在很多方面,CruiseControlserver已经成为持续集成实践的同义词。而如今,CruiseControl已发展成为一个家族式系统,包含CruiseControl.java、CruiseControl.net、CruiseControl.ruby等适应不同语言环境的实现,其强大的插件和扩展能力也是诸多同类系统无法比你的。而在这里,我仅仅介绍该家族的本家CruiseControl.java,即CruiseControl。CruiseControl是一个不错的持续集成server,只是国内社区的普遍反应是:它的配置太麻烦,无从下手。从本篇文章開始,我将逐步介绍CruiseControl的环境搭建与配置,以及持续集成中的一些实践。我们将从最简单的使用方式(stand-alone)開始,以便您能够高速開始您的持续集成之旅,而不必面对“千奇百怪”的问题。
好!先让我们简单搭建个持续集成server再说吧


一、我使用的CruiseControl版本号

  1. CruiseControl是一个java开源项目,我将以它近期的一个分支版本号来介绍它的使用。CruiseControl近期公布的版本号是V2.7.1。这个分支版本号就是在V2.7.1基础之上。
  2. 这个分支版本号包括一个Dashboard,能够方便地看到各项目的构建状态。
  3. 这个分支版本号当然还支持多个Build Loop,你能够在多个机器上部署独立的Build Loop,从而建立你自己的Build Grid。

二、得到CruiseControl的分支版本号

要得到这个分支版本号,你能够使用subversion不用不论什么password从CruiseControl的Repository中检出。命令例如以下:
svn checkout https://cruisecontrol.svn.sourceforge.net/svnroot/cruisecontrol/branches/cce/cruisecontrol/

三、构建CruiseControl

0.    你机器上至少要安装有JAVA 1.4,并在环境变量中设置有JAVA_HOME,并把java/bin增加到path中。CruiseControl自带了ANT,所以不用事先安装。

  1. 从源码中构建CruiseControl

假设从源代码中构建CruiseControl,要确保你的机器能够訪问互联网。由于构建过程中要检查一些license。另外,最好有SVN client软件,由于在构建时,它会用到javahl。
       在刚刚checkout出来的CruiseControl文件夹下,有一个批处理文件,名为release.bat。执行这个批处理文件,你会在target文件夹下发现一个压缩文件,名这cruisecontrol-bin-2.7.2-dev.zip。将其解压到一个文件夹,我们这里解压到C盘根文件夹下。解压后,文件夹结构例如以下:

      2.  直接使用已构建完毕的CruiseControl 
假设你不想做这一步,也能够在binaryrelease文件夹下发现解压后的文件,把它们复制到对应的文件夹下也能够。

四、执行CruiseControl

CruiseControl能够执行在多种应用server中,当然,它自己也捆绑了一个开源应用server,那就是Jetty 6。为了尽快建立我们的环境,我们这里临时使用它自己捆绑的Jetty,高速開始我们的持续集成之旅。
   直接执行CruiseControl文件夹下的CruiseControl.bat,它会自行启动Jetty6,当从Console中看到它启动完毕后,你就能够在浏览器中訪问http://localhost:8080/dashboard,此时你会看到一个名为connectFour的演示样例项目在Dashboard上显示了。

(假设你足够快的话,你会发现Dashboard 上的小方块是从灰色变成深绿色的。为什么呢?我们以后再说。)
“绿色”表示该项目构建通过。假设要是有多个项目的话,应该看到多个小方块。

点击“Builds” Tab页,就到了 Builds 页。这一页会以列表的方式显示全部的项目。当前仅仅有一个项目,所以在列表中仅仅有一行,例如以下图所看到的:

 在该页面上点击某个项目时,会打开Build Detail页,显示该项目近期一次Build的信息。页面右側是该项目全部历史构建信息。你会发现,这时connectFour项目有两个构建历史版本号,一个是刚刚构建完毕的,还有一个是两年前的构建。这些信息是来自于CruiseControl对该项目的日志文件。此时,点击这两个构建结果中的不论什么一个,都会打开该次构建的Build Detail页面,显示相关的构建历史信息。例如以下图所看到的:

我们将在下一篇文章中简要介绍CruiseControl的配置文件,为您增加自己的构建项目做准备。

搭建你的持续集成server - CruiseControl step by step(1)的更多相关文章

  1. 持续集成:CruiseControl.NET + VisualSVN.Server

    刚换了工作,有需要搭建一套持续集成的平台,做一下总结. 首先是我用到的工具: 上面缺少了Microsoft Fxcop,可以用来做代码校验,不过实际情况暂时还没有用到.主要的需求目前是,使用已发布的稳 ...

  2. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

  3. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

  4. Jenkins 搭建 .NET Core 持续集成环境

    关于c#的.Net FrameWork 的集成环境以及MsBuild的配置可以看     jenkins搭建.NET FrameWork持续集成环境 这篇文章     关于.NET Core 这个项目 ...

  5. 使用Docker搭建Jenkins+Docker持续集成环境(自动化构建发布部署)

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  6. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  7. 使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境

    1. 环境设计 搭建一个从开发到测试知道发布上线可以自动换完成的CI系统.这个系统中包含4个环境. 开发(dev)环境: 码农使用. 测试(test)环境: 测试人员使用. 预发布(prepublis ...

  8. 搭建OpenSTF+Jenkins持续集成环境的协同开发

    最近在研究如何将OpenSTF与Jenkins进行协同开发,刚刚爬梯子看了些资料,赶紧记录下来. 转载请注明出处:https://www.cnblogs.com/v88v/p/10405338.htm ...

  9. Ant+jmeter+jenkins搭建测试的持续集成

    前提: Ant+jmeter 已经搭建完成并成功运行(参看ant+jmeter自动化性能测试) Jenkins在本地已经安装可运行(参看上一篇) 1.下载Jenkins安装 2.浏览器输入地址http ...

随机推荐

  1. 关于js封装框架类库之选择器引擎(一)

    选择器模块之传统做法 var tag = function (tag){ return document.getElementsByTagName(tag); } var id = function ...

  2. Javascript 递归函数

    递归函数就是在函数内部调用它自己.在Javascript 中有很多写法,值得我们学习一下(Javascript太灵活了).还是用n的 阶乘 来写例子吧. 1. 首先,来看一个最普通 最正常的写法. f ...

  3. 使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)

    最近在使用maven,顺便尝试了下tomcat部署.网上找到了很多资料但是都不是最新的,所以贴上比较新的Tomcat7部署代码和配置,方便以后回顾-->测试OK. 1. 首先是配置Tomcat ...

  4. ES配置详解

    elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来 ...

  5. Android应用开发基础篇(15)-----URL(获取指定网址里的图片)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2389190.html 一.概述 URL,说白了就是一个网络地址(网址),通常一个网址里包 ...

  6. servlet三种实现方式之一实现servlet接口

    servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第一种示例代码如下(已去掉包名): import ...

  7. First AngularJS !

    My first angular! <html ng-app> <head> <meta charset="utf-8"> <script ...

  8. 设计模式的C++实现 2.工厂模式

    工厂模式,实例化对象,用工厂方法取代new操作. 工厂模式基本与简单工厂模式差点儿相同,简单工厂中每次加入一个子类必须在工厂类中加入一个推断分支,这违背了开闭原则.而工厂模式的解决方法是将简单工厂中的 ...

  9. Ext JS学习第六天 Ext自定义类(一)

    此文来记录学习笔记 •我们在之前的学习,已经对ExtJS有了一个初步的认识,那么如果要学好ExtJS,对于javascript是必须的,也就是说,对于理解ExtJS底层基础架构的理解也是必须的.那么我 ...

  10. CSS中 清除浮动解决“包含问题”

    今天看到大神对浮动定位作了个详细的分析  刚好就分析了当时任务三遇到的问题 在一个div中定义了三个div,让横向排列,结果父元素div的背景色显示不出来了 ,这是个经典问题----包含浮动 < ...