博客园  :: 首页  :: 联系 :: 管理

DailyBuild搭建记录

Posted on 2013-05-05 22:19  雪庭  阅读(554)  评论(0)    收藏  举报

 

𝔒 DailyBuild搭建记录

 

𝔒 DailyBuild搭建记录

1 DailyBuild搭建记录

公司要搭建DailyBuild工作环境,进行持续化集成开发,持续化集成工具便是服务于敏捷 软件开发的一个系列。它主要将原本分散,无序的工作流程,通过工具软件有机的组织起 来,并且在组织的过程中,参与开发设计测试的各个部门的人员都能从中获取到自动化方 面的优惠,使得团队的工作效率大大提升,方便分布式开发,以下是搭建过程记录。

测试环境:

  • 开发机器:192.168.0.102,winxp sp2.0+vs2005
  • svn服务器:192.168.0.101,debian/linux

1.1 下载

1.2 安装

  • 确保你的电脑上已经安装了IIS(因为CC.NET会在IIS里面建立一个虚拟目录作为Web服务, 我的机器中没有IIS,手头又没有xp光盘,在网上找了个不用光盘安装IIS的方 法,http://www.52z.com/soft/22412.html ,才把IIS安装好
  • IIS中注册asp.net服务,在winsods运行框內输入: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnetregiis.exe -i
  • CruiseControl.NET-1.8.3.0是目前最新版本,需要.net framework3.5类库支持,安装 framework 3.5环境
  • OK,现在可以安装cc.net服务器端和客户端,默认会把CCNET安装为WINDOWS服务,手动启 动,请改为自动启动。还会在IIS下安装一个 webdashboard,可以通过WEB访问CCNET,并 可以进行相关的强制构建,查看日志及其他的管理等。
  • 安装成功,不要高兴太早。你打开IIS看看你的默认的web站点下面有名为ccnet的虚拟目录 吗,如果有,右键浏览,出现如图所示的界面,才能说cc.net安装成功了,否则是前面的 哪个步骤有问题,我在这里耗了不少时间

latex-table

1.3 初级配置

  • cc.net安装目录下有Example目录,其中的配置文件可以供参考。主配置文件为:ccnet.config。 一般来说ccnet.config每个构建项目有如下几部分:触发器(triggers),源码管理器 (sourcecontrol),任务(tasks),测试(test)等
  • 我已有一个实际的项目,在D:\workspace\temperApplication\temper目录下,打算建 立一个的cc.net工作模式,使用定时(30秒)触发,使用filesystem源码管理,用 MSBuild构建,用NUnit测试
  • 定时(30秒)触发

    项目名称MyFirstProject,触发设置为毎30次,buildCondition选项为 IfModificationExists表示仅当检测到文件修改时才进行构建。

<project name="MyFirstProject"
description="demoproject showing a small config">

<triggers>
<!-- check the source control every X time for changes, 
and run the tasks if changes are found -->
<intervalTrigger
name="continuous"
seconds="30"
buildCondition="IfModificationExists"
initialSeconds="5"/>
</triggers>
...
  • filesystem源码管理

    这里对源码管理简化,不用版本控制,cc.net只判断 `D:\workspace\temperApplication\temper'目录下文件是否有修改,如有修改,构 建就会开始

<sourcecontrol type="filesystem">
  <repositoryRoot>D:\workspace\temperApplication\temper</repositoryRoot>
  <checkRecursively>false</checkRecursively>
</sourcecontrol>
  • 用MSBuild构建
<tasks>
  <msbuild>
    <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
    <workingDirectory>D:\workspace\temperApplication\temper</workingDirectory>
    <projectFile>temper.sln</projectFile>
    <buildArgs></buildArgs>
    <targets></targets>
    <timeout>60</timeout>
    <logger>d:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
  </msbuild>
</tasks>    

MSBuild在`C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\'目录下,buildArgs 表示传递给构建程序的参数。

<logger>d:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>

`ThoughtWorks.CruiseControl.MSBuild.dll'是一个CCNET的日志 插件,用于转换 MSBuild的输出为XML格式。

  • 我们最终的ccnet.config配置是如下,现在我们已经可以感受一下cc.net了
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  <!-- This is your CruiseControl.NET Server Configuration file. Add your projects below! -->

  <project name="MyFirstProject"
           description="demoproject showing a small config">

    <triggers>
      <!-- check the source control every X time for changes, 
           and run the tasks if changes are found -->
      <intervalTrigger
         name="continuous"
         seconds="30"
         buildCondition="IfModificationExists"
         initialSeconds="5"/>
    </triggers>

    <sourcecontrol type="filesystem">
      <repositoryRoot>D:\workspace\temperApplication\temper</repositoryRoot>
      <checkRecursively>false</checkRecursively>
    </sourcecontrol>

    <tasks>
      <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
        <workingDirectory>D:\workspace\temperApplication\temper</workingDirectory>
        <Projectfile>temper.sln</projectFile>
        <buildArgs></buildArgs>
        <targets></targets>
        <timeout>60</timeout>
        <logger>d:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
      </msbuild>
    </tasks>    

    <publishers>
      <xmllogger />
      <artifactcleanup cleanUpMethod="KeepLastXBuilds"
                         cleanUpValue="50" />
    </publishers>

  </project>

</cruisecontrol>
  • 打开在浏览器中输入`http://http://127.0.0.1/ccnet/' 会出现cc.net的管理界面, 我们要修改一下`D:\workspace\temperApplication\temper'目录下的文件 Awareness.cs,可以在浏览器中看到构建情况和细节

latex-table

latex-table

latex-table

  • 可以安装cc.net的客户端,CCTray:添加服务器及项 目:File->Settings->BuildProjects->Add->Add Server。选一个连接类型,输入相应 的服务器地址或URL,再从Available Projects列表中选择相应的项目点击“OK“即可。 这样就可以在CCTray的主界面的列表中看到刚添加的项目,可以进行强制构建,停止构 建等活 动,还可以看到构建的状态,失败红色,进行中黄色,成功绿色。还可以选择 一些其他的如声音提示等。

1.4 svn配置

  • 安装Slik-Subversion-1.7.8-win32.msi,这是svn命令行工具,TortoiseSVN客户端 GUI。cc.net要用svn命令行工具。
  • 我的svn服务器用的是debian/linux,IP是192.168.0.101,cc.net安装在 192.168.0.102的winxp系统上。linux svn服务已配置与apache结合,可以通过htt访 问。在ccnet.config配置中将sourcecontrol段改为:
<sourcecontrol type="svn">
  <trunkUrl>http://192.168.0.101/svn/demodulate/temper</trunkUrl>
  <workingDirectory>D:\code</workingDirectory>
  <executable>D:\Program Files\SlikSvn\bin\svn.exe</executable>
  <username>user</username>
  <password>password</password>
</sourcecontrol>
  • 现在当svn代码库中有变化,cc.net自动会更新到workingDirectory目录,并开始构建工 程。比如我修改提交了库里的文件Awareness.cs,workingDirectory目录中 Awareness.cs更新了,cc.net重新构建了,见下图。

    latex-table

1.5 待续

后面我将把FxCop,NUnit,NUnit2report,发布,email通知都配置进cc.net。

Date: 2013-05-05 22:27:20 CST

Author: machine of awareness

Org version 7.8.06 with Emacs version 23

Validate XHTML 1.0