持续集成实践之二 VSS+MsBuild2.0+CC.net

根据实践的需要,为实现VSS+MsBuild2.0+CCnet这种组合的搭配,持续集成服务器(CI服务器)首先需要安装MicrosoftVisual SourceSafe ,Freamwork2.0,IIS;三者缺一不可。

 

装好以上这些之后,就双击ccnet的安装程序,安装即可。在windows2003上面安装过程正常。安装的时候不要去更改它的默认地址,更改了之后,发现启动不了。安装在默认地址下,启动就正常。我在在windows 2008服务器上安装时提示:ASP设置不了,请安装完成后再去设置,但是后来发现不设置也没有问题。

 

装好之后,在程序中可以找到,如下图:

 

使用ccnet工作的前提条件是需要将ccnet.config文件配置正确。CCValidator这个小程序就是用来验证ccnet.config中配置的内容是否有他认识不了的地方。应该是做一个语法的检查。

 

在CI服务器这个地址C:\ProgramFiles\CruiseControl.NET\server\ccnet.config。

 找到ccnetconfig文件,打开你会看到这样一行字<!-- This is yourCruiseControl.NET Server Configuration file. Add your projects below! --> ,就从这里开始吧。

<?xml version="1.0" encoding="utf-8"?>
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<!-- This is your CruiseControl.NET Server Configuration file. Add your projects below! -->
<!—持续集成的一个特定项目,一个project之间都是对此项目的设置,一个ccnet.config文件可以配置多个项目-->
<project name="项目1" >
<!—项目1集成的工作目录-->
<workingDirectory>D:\ccnet</workingDirectory>
<!—项目1集成的中间临时文件的存储目录-->
<artifactDirectory>D:\ccnet</artifactDirectory>
<!—给每一次的集成的结果按照时间+流水取名,便于查看-->
<labeller type="dateLabeller" />

<!—1.源码库的配置-->
<!—2.触发器trigger的配置-->
<!—3.MsBuild2.0的配置-->
<!—4.publisher的配置-->
<!—5.其它-->
</project>
</cruisecontrol>


以上是我所使用的ccnet.config文件的块的组成;以下按照编号对各块进行说明。

1.源码库的配置

   
  <!--源码控制类型,此处必填vss-->
 <sourcecontrol type="vss">
   <!--如果操作系统(中文)与sourcesafe安装的语言(英文)不一样的话就会出现检测不出来源码的变更的情况,加上此设置可以避免此类问题-->
 <culture>en-US</culture> 
<autoGetSource>true</autoGetSource>
 <!--源码库中的项目的地址--> <project>$/*****/*****/版本控制库/代码/项目1</project>
<alwaysGetLatest>true</alwaysGetLatest> 
<!--vss用户名--> 
<username>user1</username>
 <!--vss密码--> 
<password>password1</password>
 <!--vss服务器所在的路径-->
 <ssdir>\\192.168.1.2\vss\项目1</ssdir>
 <!--工作目录,可以使用相对目录,以上面的workingDirectory为准--> 
<workingDirectory>D:\ECMS</workingDirectory>
</sourcecontrol>







2.触发器trigger的配置

<triggers>

  <!--定时任务,可以设置在哪天的那个时间执行构建计划-->

  <scheduleTrigger time="21:00" buildCondition="ForceBuild">

    <!--以下配置节有指定,则会在指定的时间日期内执行,没有则每天执行,这里没有指定-->

    <!--<weekDays>Monday, Tuesday</weekDays>-->

  </scheduleTrigger>

    <!--每天21:30-23:59以及00:00-08:20不执行-->
    <filterTrigger startTime="21:30" endTime="08:20">
      <!--每隔多少时间执行一次-->
      <!--intervalTrigger触发器的名字叫做 continuous, 每30秒钟去检查一下源代码控制器上面是否有变更,如果有变更就触发一次持续集成,从检查到变更的时间开始静默60秒钟,然后才去源代码服务器上面去拉代码-->
 <trigger type = "intervalTrigger" name="continuous" seconds="30" buildCondition="IfModificationExists" initialSeconds="60" /> </filterTrigger> </triggers>

3.MsBuild2.0的配置
<tasks>
<msbuild>

      <!--msbuild的路径,一般在系统目录下-->

      <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>

      <workingDirectory>D:\项目1\workingDirectory</workingDirectory>

      <!--MSBuild会找到文件,并对它进行编译;一般使用解决方案文件,但是这个项目有点特别,所以使用了项目文件-->
      
      <projectFile>D:\项目1\UI\cctest\cctest.csproj</projectFile>


      <!--编译参数-->
      <!--<buildArgs>/p:Configuration=Release /v:diag</buildArgs>-->

      <!--<buildArgs></buildArgs>-->

      <!--编译的目录类型-->

      <!--<targets></targets>-->

      <!--过期时间-->
      <!--项目太大的时候,这个过期时间一定要设到足够长,否则编译不完,ccnet就把它杀死了,导致编译不能成功-->
      <timeout>1800</timeout>

      <!--记录编译的详细日志,需要单独下载这个程序集,放在工作目录(workingDirectory)下,我一直没搞清楚要放在哪个工作目录,总之每个都放一个好了,放好了之后,就能记录编译的详细日志了-->

      <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>

    </msbuild>
 </tasks>


4.publisher的配置

publisher块一定不能放到<tasks></tasks>块中去,一定要放在<tasks></tasks>的外面才可以正确的发送邮件出来。只要将发送服务器地址,smpt的地址,收件人的地址设置正确就可以了

<publishers>
      <xmllogger logDir="D:\ccnet\buildlogs" />
      <email mailport="25" includeDetails="TRUE" mailhostUsername="ci_ccnet@****.com" mailhostPassword="password" useSSL="FALSE">
        <from>ci_ccnet@****.com</from>
        <mailhost>smtp.****.com</mailhost>
        <users>
          <user name="danqueen" group="buildmaster" address="danqueen@****.com" />
          <user name="developer" group="developers" address="developer@****.com" />
        </users>
        <groups>
          <group name="developers">
            <notifications>              
              <notificationType>Failed</notificationType>
              <notificationType>Fixed</notificationType>
            </notifications>

          </group>
          <group name="buildmaster">
            <notifications>
              <notificationType>Always</notificationType>
            </notifications>
          </group>
        </groups>
        <!--
        <converters>
          <regexConverter find="{1}quot; replace="@TheCompany.com" />
        </converters>-->
        <modifierNotificationTypes>
          <NotificationType>Failed</NotificationType>
          <NotificationType>Fixed</NotificationType>
        </modifierNotificationTypes>
        <subjectSettings>
          <subject buildResult="StillBroken" value="Build is still broken for ${CCNetProject},the fix failed." />
          <subject buildResult="Broken" value="${CCNetProject} broke at ${CCNetBuildDate} ${CCNetBuildTime} , last checkin(s) by ${CCNetFailureUsers}" />
          <subject buildResult="Exception" value="Serious problem for ${CCNetProject}, it is now in Exception! Check status of network / sourcecontrol" />
          <subject buildResult="Fixed" value="${CCNetProject} is fixed now! last checkin(s) by ${CCNetFailureUsers}. Well done!" />
        </subjectSettings>
        <xslFiles>
          <file>xsl\header.xsl</file>
          <file>xsl\compile.xsl</file>
          <file>xsl\unittests.xsl</file>
          <file>xsl\modifications.xsl</file>
          <!--下面这行默认没有加进去,需要手动将其写进来,目的是将编译结果添加在要发送的邮件中-->
          <xslFile>xsl\compile-msbuild.xsl</xslFile>
        </xslFiles>
        <!--
        <attachments>
          <file>C:\Data\AFile.txt</file>
          <file>Relative.txt</file>
        </attachments>
        -->
      </email>
    </publishers>
5.其它

添加外部链接,可以将jemeter等工作用需要用到的外部的链接,也加载到ccnet的窗口中来

 <externalLinks>
      <externalLink name="Future" url="http://*******/login.jsp" />
    </externalLinks>

其它还有很多,可以参见官网的说明文档,此处仅抛砖引玉。


需要说明的是,ccnet可以从程序打开,也可以通过服务运行。调试时建议从程序打开。调试好了就用服务去运行更好。通过服务运行时,需要等给它windows的登录方式进行运行才可以正常从服务运行。如下图:



打开后,如果没有其它特别的问题,ccnet就可以开始持续的集成了。

ccnet在工作中的截图如下:













































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值