• 每日构建(三)


        这前的两篇每日构建,写的简单了点,这里在之前的基础上做些改进,使得更加容易管理和配置。


        每日构建改进一:build文件的共享。

     

          在进行每日构建时,对于复制文件这部分功能我采用的是nant,nant最核心的部分是build文件,一般一个大型网站有时分好多个解决方案,例如酒店项目,机票项目等等,所以对应不同的解决方案会有不同的部署规则。而网站的部署往往不是一部到位,随着业务需求的变化,会产生不同的网站版本。但nant用的build文件应该是一样的,这里就需要build文件能够在不同的版本中共享。
     
          解决方案:nant的build文件支持外部属性。先贴一个build文件:先看看copy节点,它需要两个重要的参数:源文件夹目录,目的文件夹目录,build文件中如果copy节点过多,我们需要写相当多的路径,这里可以在build文件中定义一个property节点,它相当于C#中的属性。一方面可以在copy命令中用这个属性来代替实际路径,另一方面是为了在外部调用build文件时动态给属性值。

    代码
    <?xml version="1.0" encoding="gb2312" ?>
    <project name="Deploy" default="run">
        
    <property name="basename" value="WebSite"/>
        
    <property name="debug" value="true"/>
         
    <property name="base.dir" value="http://www.cnblogs.com/../版本一/src" />
        
    <property name="deploy.dir" value="http://www.cnblogs.com/../deploy/web" />
        
    <property name="FxCop.dir" value="http://www.cnblogs.com/../deploy" /> 
        
    <target name="clean">
        
    </target>
        
    <target name="deploy" depends="clean"> 
       
     
    <copy todir="${deploy.dir}/new/member">
         
    <fileset basedir="${base.dir}/member/">
            
    <include name="**/*.js" /> 
            
    </fileset>
     
    </copy> 
        
    </target>
        
    <target name="run" depends="fxcop">
        
    </target>
        
    <target name="fxcop" depends="deploy">    
        
    </target> 
    </project>

          svn与nant是如何合作的:同样贴出代码。和我上篇文章有区别的就在于增加了buildArgs参数,通过"-D"来连接想要重写的属性内容。多个属性中间用空格区分。当版本二进行每日构建时,只需要修改ccnet的project配置即可,原来的build文件不需要改动。

    代码
    <nant>
            
    <executable>C:\min.jiang\bin\nant.exe</executable>
            
    <baseDirectory>C:\min.jiang\proj\EL_Online_V36_11.02_1215</baseDirectory>
            
    <nologo>false</nologo>
            
    <buildFile>C:\min.jiang\bin\DeployScripts\Hotels\default.build</buildFile>
            
    <targetList>
              
    <target>run</target>
            
    </targetList>
            
    <buildArgs>-D:deploy.dir=C:\min.jiang\deploy\版本一\package\web -

    D:
    base.dir=C:\min.jiang\proj\版本一\src</buildArgs>
            
    <buildTimeoutSeconds>1200</buildTimeoutSeconds>
          
    </nant>

        每日构建改进二:部署包自动提交SVN。

            ccnet在部署包生成后,会存放在ccnet服务器上,其它的同事想要获取这个部署包,只能登录服务器,或者是从共享文件夹中获取,既然有了SVN,我们就可以把生成的部署后放进SVN。修改的deploy.bat如下:


    shift
    if exist  "C:\min.jiang\deploy\%0\package\Web_auto.rar" del /F C:\min.jiang\deploy\%0

    \package\Web_auto.rar


          说明:这里先检测本地部署文件目录中是否有部署包,如果有先删除。


    "C:\Program Files\WinRAR\rar.exe" A -r -ep1 -ed -ta%1 C:\min.jiang\deploy\%0

    \package\Web_auto.rar -AD C:\min.jiang\deploy\%0\package\web


          说明:按时间来实现增量压缩(压缩包中只包含指定时间之后修改的文件)。


    if not exist "C:\min.jiang\deploy\%0\Web_auto.rar" svn checkout http://svn/路径/web3.5/%0/

    "C:\min.jiang\deploy\%0" --username aaa --password aaa


          说明:如果SVN部署目录中没有部署包,先从SVN上下载。


    if exist "C:\min.jiang\deploy\%0\Web_auto.rar" svn revert "C:\min.jiang\deploy\%0\Web_auto.rar"


          说明:保证本地版本和SVN版本内容相同。


    xcopy C:\min.jiang\deploy\%0\package\Web_auto.rar  C:\min.jiang\deploy\%0\ /y


          说明:把本地的部署包复制到SVN部署目录下。


    svn commit -m "update new package"  C:\min.jiang\deploy\%0\Web_auto.rar


          说明:提交最终的部署包。

         上面的代码目前有一个缺陷,就是事先需要手动在SVN部署目录下面创建一个Web_auto.rar,然后提交SVN,我在调用svn add C:\min.jiang\deploy\%0\Web_auto.rar后,执行svn commit时,会提示文件不在SVN控制下。大家如果原因,请指教。

       每日构建改进三:设置ccnet网站。

      

           默认情况下,ccnet安装后会在默认网站下生成一个虚似目录,为了方便访问,我们可以建立一个站点,例如主机头定义为http://www.ccnetsite.com/,这样同事只需要把自己本机的host指向到ccnet服务器IP,以后生成部署包只需要打开http://www.ccnetsite.com/就可以进行管理。

        

  • 相关阅读:
    Nebula通关指南
    hackersonlineclub.com
    PHP设计的超强大的文件上传类(单文件上传)
    PHP面向对象实例(图形计算器)
    DIV+CSS布局网站基本框架
    python的threading模块
    Python 命令行参数和getopt模块详解
    python optparse模块
    python的sys模块
    python实现简单的netcat
  • 原文地址:https://www.cnblogs.com/ASPNET2008/p/1622050.html
Copyright © 2020-2023  润新知