【Hello CC.NET】自动化发布时 Web.config 文件维护_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 【Hello CC.NET】自动化发布时 Web.config 文件维护

【Hello CC.NET】自动化发布时 Web.config 文件维护

 2013/8/3 13:08:28  海华  博客园  我要评论(0)
  • 摘要:在《【HelloCC.NET】CC.NET实现自动化集成》的HellowWorld中经实现:1.获取源码2.编译项目3.集成测试4.Ftp发布项目5.创建安装包6.邮件通知在方案落地的过程中,FTP上传开发自测环境(或测试环境)后,仍然需要人手来修改相关配置(比如Web.config)。假设项目的Web.config配置如下:<appSettings><addkey="OrgDB"value="xxx_dev_db"/><
  • 标签:.net Web 文件 net 发布

在 《【Hello CC.NET】CC.NET 实现自动化集成》 的 HellowWorld 中经实现:

1.获取源码

2.编译项目

3.集成测试

4.Ftp发布项目

5.创建安装包

6.邮件通知

在方案落地的过程中,FTP 上传开发自测环境(或测试环境)后,仍然需要人手来修改相关配置(比如 Web.config)。

假设项目的 Web.config 配置如下:

  <appSettings>
    <add key="OrgDB" value="xxx_dev_db"/>
    <add key="BusinessDB" value="xxx_DEV_DB"/>
    <add key="RedisCache" value="192.168.10.111:6379"/>
    <add key="SSOService" value="http://192.168.10.111/DEV/V1.1.9/SSOService.svc"/>
    <add key="Coder" value="蔡海华"/>
  </appSettings> 

 在发布到测试环境之前,我们需要把 _dev_db 替换为 _test_db,192.168.10.111:6379 替换为 192.168.10.112:6379 ,http://192.168.10.111/DEV/V1.1.9/SSOService.svc 替换为 http://192.168.10.111/Test/V1.1.9/SSOService.svc(忽略大小写)。

 

一、用 bat 脚本实现文件拷贝和web.config内容替换

1.文件拷贝

为了不影响旧的环境,我们新建一个文件夹 PackageDirectory 来保存修改后的文件。

文件拷贝用批处理来实现:新建一个 txt 文件,输入以下内容,另存为 DFCopier.bat(directories & files copier),copyfrom 和 copyto 由参数方式传入。

@echo off  
set from=%1
set to=%2

::rd /q/s "%to%"&&md "%to%"
dir /a /b %to%|findstr .>nul 2>nul && goto havefiles || goto nofiles  
      
:havefiles  
rem echo 有文件  
goto end 
      
:nofiles  
rem echo 没有文件  
XCOPY %from% %to% /c/q/e/r
:end

 

2.文件内容替换

新建一个 txt 文件,输入以下内容,另存为 FCReplacer.bat(file content replacer),directory , file, from, to 由参数方式传入。

@echo off
set dir=%1
set file=%2
set from=%3
set to=%4

setlocal enabledelayedexpansion
pushd %dir%
for /f "tokens=1,2* delims=:" %%i in ('findstr /n ".*" %file%') do (
    set txt=%%j
    if "!txt!" == "" (
        echo.>>%dir%%file%.tmp
    ) else (
        echo !txt:%from%=%to%!>>%dir%%file%.tmp
    )
)
move /y %dir%%file%.tmp %file%
:end

3.配置 ccnet.config

在 tasks 节点中添加以下两个子节点。假设一个最简单的场景:替换数据库命名 xxx_dev_db 为 xxx_test_db。

      <!-- 复制文件到 Package 目录 -->
      <exec>
        <executable>C:\CC.NET\Server\DFCopier.bat</executable>
        <buildArgs>C:\CC.NET\Server\Test\PublishDirectory C:\CC.NET\Server\Test\PackageDirectory</buildArgs>
      </exec>
      <!-- 替换 Package 目录下的 WebConfig 文件 -->
      <exec>
        <executable>C:\CC.NET\Server\FCReplacer.bat</executable>
        <buildArgs>C:\CC.NET\Server\Test\PackageDirectory\WcfService Web.config _dev_db _test_db</buildArgs>
      </exec>

ftp 和 package 部分修改如下:

      <!--ftp发布Wcf服务到开发环境-->
      <ftp>
        <serverName>127.0.0.1</serverName>
        <userName>admin</userName>
        <password>admin</password>
        <action>UploadFolder</action>
        <ftpFolderName></ftpFolderName>
        <localFolderName>C:\CC.NET\Server\Test\PackageDirectory\WcfService</localFolderName>
        <recursiveCopy>true</recursiveCopy>
        <timeDifference>1</timeDifference>
      </ftp>
      <package>
        <name>Lib.sln</name>
        <compression>9</compression>
        <manifest type="defaultManifestGenerator" />
        <packageList>
          <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\*.svc" targetFolder="WcfService" />
          <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\*.Release.config" targetFolder="WcfService" />
          <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\bin\*.dll" targetFolder="WcfService\bin" />
          <!--<packageFolder sourceFolder="C:\CC.NET\Server\Test\PublishDirectory\WcfService" targetFolder="WcfService" 
                         fileFilter="*.*" flatten="false" includeSubFolders="false" />-->
        </packageList>
      </package>

 

4.测试

Forcebuild 得到以下结果(只截取了 DFCopier.bat 和 FCReplacer.bar 相关的部分):

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" alt="" />

打开 Web.config 文件却发现中文会变成乱码。

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" alt="" />

二、自己实现文件内容替换功能

批处理的方式在中文面前显得有点苍白无力,另外一些更复杂的场景是无法简单地 replace 来解决。一番 Google 折腾后我决定自己写一个 replacer,支持正则来处理可能出现的复杂需求。

1.实现 replacer

新建一个项目,命名为 FCReplacer。实现的代码 100 行不到。编译得到 FCReplacer.exe

    class Program
    {
        static void Main(string[] args)
        {
            var file = GetFileName(args);
            var replacers = GetReplaers(args);

            if (file == null || replacers == null || replacers.Count() == 0)
                return;

            var txt = File.ReadAllText(file);

            Console.WriteLine(string.Format("Replace content of file({0})", file));
            foreach (var replacer in replacers)
            {
                Console.WriteLine(string.Format("Replace {0} to {1}", replacer.From, replacer.To));
                txt = replacer.Replace(txt);
            }
            File.WriteAllText(file, txt);
        }
        static string GetFileName(string[] args)
        {
            string filename = null;
            var fileRegex = new Regex("^/file=(=?.*)$", RegexOptions.Compiled);
            foreach (var arg in args)
            {
                var match = fileRegex.Match(arg); 
                if (match.Groups.Count == 2)
                {
                    filename = match.Groups[1].Value.Trim();
                    break;
                }
            }
            return filename;
        }
        static IEnumerable<Replacer> GetReplaers(string[] args)
        {
            var list = new List<Replacer>();
            var replacerRegex = new Regex("^/from=(=?.*)/to=(=?.*)$", RegexOptions.Compiled);
            foreach (var arg in args)
            {
                var match = replacerRegex.Match(arg);
                if (match.Groups.Count == 3)
                {
                    var from = match.Groups[1].Value.Trim();
                    var to = match.Groups[2].Value.Trim();
                    list.Add(new Replacer() { From = from, To = to });
                }
            }
            return list;
        }
        class Replacer
        {
            public string From { get; set; }
            public string To { get; set; }
            public string Replace(string txt, RegexOptions regexOption = RegexOptions.IgnoreCase)
            {
                txt = Regex.Replace(txt, this.From, this.To, regexOption);
                return txt;
            }
        }
    }

 

 

2.配置 ccnet.config

把文件替换的批处理部分改为 FCReplacer.exe。替换的逻辑通过参数方式传入。假设三个更复杂的场景:

(1) 替换数据库名 xxx_dev_db 为 xxx_test_db

(2)替换 redis 缓存服务的地址 192.168.10.111:PORT 为 192.168.10.112:PORT,端口设置不变

(3)替换 SSO 服务地址,版本号不变

      <!-- 复制文件到 Package 目录 -->
      <exec>
        <executable>C:\CC.NET\Server\DFCopier.bat</executable>
        <buildArgs>C:\CC.NET\Server\Test\PublishDirectory C:\CC.NET\Server\Test\PackageDirectory</buildArgs>
      </exec>
      <!-- 替换 Package 目录下的 WebConfig 文件 -->
      <!--<exec>
        <executable>C:\CC.NET\Server\FCReplacer.bat</executable>
        <buildArgs>C:\CC.NET\Server\Test\PackageDirectory\WcfService Web.config _dev_db _test_db</buildArgs>
      </exec>-->
      <exec>
        <executable>C:\CC.NET\Server\FCReplacer.exe</executable>
        <buildArgs>
          /file=C:\CC.NET\Server\Test\PackageDirectory\WcfService\Web.config
          /from=_dev_db/to=_test_db
          /from=http://192.168.10.111/Dev/V(=?\d+(.\d+)*)/SSOService.svc/to=http://192.168.10.111/Test/V$1/SSOService.svc
        </buildArgs>
      </exec>

 

3.测试

Forcebuild 得到以下结果(只截取了 DFCopier.bat 和 FCReplacer.exe 相关的部分):

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" alt="" />

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" alt="" />

打开 Web.config 文件,三个替换逻辑都已经实现,中文也不再是乱码。

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" alt="" />

 

完整的 ccnet.config 配置如下:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  <project name="Lib.Sln">
    <!--标签-->
    <labeller type="dateLabeller"/>
    <artifactDirectory>C:\CC.NET\Server\Test\ArtifactDirectory</artifactDirectory>
    <!--项目的目录-->
    <workingDirectory >C:\CC.NET\Server\Test\WorkingDirectory</workingDirectory>
    <!--自动构建结果的查看地址-->
    <webURL>http://vw-caihaihua/CC/server/local/project/Lib.Sln/ViewProjectReport.aspx</webURL>
    <!--自动运行时间间隔-->
    <triggers>
      <!--源码修改触发-->
      <intervalTrigger seconds="10" buildCondition="IfModificationExists " />
      <!--每日构建-->
      <scheduleTrigger time="19:00" buildCondition="ForceBuild">
        <weekDays>
          <!--<weekDay>Sunday</weekDay>-->
          <weekDay>Monday</weekDay>
          <weekDay>Tuesday</weekDay>
          <weekDay>Wednesday</weekDay>
          <weekDay>Thursday</weekDay>
          <weekDay>Friday</weekDay>
          <!--<weekDay>Saturday</weekDay>-->
        </weekDays>
      </scheduleTrigger>
    </triggers>
    <!--对源码修改延迟处理时间间隔-->
    <modificationDelaySeconds>30</modificationDelaySeconds>
    <maxSourceControlRetries>5</maxSourceControlRetries>
    <!--源代码管理(SVN)-->
    <sourcecontrol type="svn">
      <trunkUrl>https://vw-caihaihua/svn/Test/trunk/</trunkUrl>
      <executable>C:\Program Files (x86)\VisualSVN Server\bin\svn.exe</executable>
      <workingDirectory>C:\CC.NET\Server\Test\WorkingDirectory\</workingDirectory>
      <username>ci</username>
      <password>123456</password>
    </sourcecontrol>
    <tasks>
      <!--<devenv>
        <solutionfile>C:\CC.NET\Server\Test\WorkingDirectory\Lib.sln</solutionfile>
        <configuration>Debug</configuration>
      </devenv>-->
      <!--理解决方案-->
      <msbuild>
        <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <buildArgs>/t:clean /t:rebuild /p:configuration=debug</buildArgs>
        <workingDirectory>C:\CC.NET\Server\Test\WorkingDirectory</workingDirectory>
        <projectFile>Lib.sln</projectFile>
        <logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
      </msbuild>
      <!--运行UnitTest-->
      <exec>
        <executable>C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe</executable>
        <baseDirectory>C:\CC.NET\Server\Test\WorkingDirectory</baseDirectory>
        <buildArgs>/testcontainer:LibTest\bin\Debug\LibTest.dll</buildArgs>
        <buildTimeoutSeconds>6000</buildTimeoutSeconds>
      </exec>
      <!--发布Wcf服务到本机-->
      <msbuild>
        <executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>C:\CC.NET\Server\Test\WorkingDirectory\WcfService</workingDirectory>
        <projectFile>WcfService.csproj</projectFile>
        <buildArgs>
          /t:ResolveReferences;Compile
          /t:_CopyWebApplication
          /p:Configuration=Release
          /p:WebProjectOutputDir=C:\CC.NET\Server\Test\PublishDirectory\WcfService
          /p:OutputPath=C:\CC.NET\Server\Test\PublishDirectory\WcfService\bin
        </buildArgs>
      </msbuild>
      <!--运行UnitTest-->
      <exec>
        <executable>C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe</executable>
        <baseDirectory>C:\CC.NET\Server\Test\WorkingDirectory</baseDirectory>
        <buildArgs>/testcontainer:WcfServiceTest\bin\Debug\WcfServiceTest.dll</buildArgs>
        <buildTimeoutSeconds>6000</buildTimeoutSeconds>
      </exec>
      <!--启动 Asp.NET Development Server-->
      <!--<exec>
        <executable>C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.EXE</executable>
        <buildArgs>/port:9999 /path:C:\CC.NET\Server\Test\PublishDirectory\WcfService</buildArgs>
        <buildTimeoutSeconds>6000</buildTimeoutSeconds>
      </exec>-->

   
<!--ADDED START-->
<!-- 复制文件到 Package 目录 --> <exec> <executable>C:\CC.NET\Server\DFCopier.bat</executable> <buildArgs>C:\CC.NET\Server\Test\PublishDirectory C:\CC.NET\Server\Test\PackageDirectory</buildArgs> </exec> <!-- 替换 Package 目录下的 WebConfig 文件 --> <!--<exec> <executable>C:\CC.NET\Server\FCReplacer.bat</executable> <buildArgs>C:\CC.NET\Server\Test\PackageDirectory\WcfService Web.config _dev_db _test_db</buildArgs> </exec>--> <exec> <executable>C:\CC.NET\Server\FCReplacer.exe</executable> <buildArgs> /file=C:\CC.NET\Server\Test\PackageDirectory\WcfService\Web.config /from=_dev_db/to=_test_db /from=http://192.168.10.111/Dev/V(=?\d+(.\d+)*)/SSOService.svc/to=http://192.168.10.111/Test/V$1/SSOService.svc a </buildArgs> </exec>
   
<!--ADDED END-->

<!--ftp发布Wcf服务到开发环境--> <ftp> <serverName>127.0.0.1</serverName> <userName>admin</userName> <password>admin</password> <action>UploadFolder</action> <ftpFolderName></ftpFolderName> <localFolderName>C:\CC.NET\Server\Test\PackageDirectory\WcfService</localFolderName> <recursiveCopy>true</recursiveCopy> <timeDifference>1</timeDifference> </ftp> <package> <name>Lib.sln</name> <compression>9</compression> <manifest type="defaultManifestGenerator" /> <packageList> <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\*.svc" targetFolder="WcfService" /> <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\*.Release.config" targetFolder="WcfService" /> <packageFile sourceFile="C:\CC.NET\Server\Test\PackageDirectory\WcfService\bin\*.dll" targetFolder="WcfService\bin" /> <!--<packageFolder sourceFolder="C:\CC.NET\Server\Test\PublishDirectory\WcfService" targetFolder="WcfService" fileFilter="*.*" flatten="false" includeSubFolders="false" />--> </packageList> </package> </tasks> <state type="state" directory="C:\CC.NET\server\CCState"/> <publishers> <!--标签备份(如果成功)--> <buildpublisher> <sourceDir>C:\CC.NET\Server\Test\WorkingDirectory</sourceDir> <publishDir>C:\CC.NET\Server\Test\HistoryVersion</publishDir> </buildpublisher> <modificationHistory/> <statistics/> <!--邮件通知--> <email mailhost="smtp.live.com" mailport="25" mailhostUsername="ci@XXXCompany.com" mailhostPassword="******" from="ci@XXXCompany.com" useSSL="TRUE" includeDetails="true"> <!--邮件标题配置--> <subjectPrefix>[CI@XXXCompany]</subjectPrefix> <subjectSettings> <!-- Success/Broken/StillBroken/Fixed/Exception--> <subject buildResult="Success" value="${CCNetProject} Build Successful: Label ${CCNetLabel}, last checkin(s) by ${CCNetModifyingUsers}.(at ${CCNetBuildDate} ${CCNetBuildDate})" /> <subject buildResult="Fixed" value="${CCNetProject} Build Fixed: Label ${CCNetLabel}, last checkin(s) by ${CCNetModifyingUsers}.(at ${CCNetBuildDate} ${CCNetBuildDate})" /> <subject buildResult="Broken" value="${CCNetProject} Broke: last checkin(s) by ${CCNetFailureUsers}.(at ${CCNetBuildDate} ${CCNetBuildDate})" /> <subject buildResult="StillBroken" value="${CCNetProject} Still Broken: last checkin(s) by ${CCNetFailureUsers}.(at ${CCNetBuildDate} ${CCNetBuildDate})" /> <subject buildResult="Exception" value="${CCNetProject} In Exception: Please check status of network / sourcecontrol.(at ${CCNetBuildDate} ${CCNetBuildDate})" /> </subjectSettings> <!--收件人配置--> <converters> <regexConverter find="$" replace="@XXXCompany.com"/> </converters> <modifierNotificationTypes> <notificationType>Failed</notificationType> <notificationType>Fixed</notificationType> </modifierNotificationTypes> <users> <user group="leader" name="ci.XXXCompany" address="ci@XXXCompany.com"/> <user group="developer" name="harvey.choi" address="harvey.choi@XXXCompany.com"/> <user group="tester" name="jolin" address="jolin.tang@XXXCompany.com"/> </users> <groups> <group name="leader"> <notifications> <!--Always/Success/Change/Fixed/Failed --> <notificationType>Change</notificationType> <notificationType>Exception</notificationType> </notifications> </group> <group name="developer"> <notifications> <notificationType>Success</notificationType> <notificationType>Fixed</notificationType> <notificationType>Failed</notificationType> </notifications> </group> <group name="tester"> <notifications> <notificationType>Fixed</notificationType> </notifications> </group> </groups> </email> <xmllogger/> </publishers> </project> </cruisecontrol>

 

到这里,一个简单场景的自动化发布部分已经实现。TODO 列表里仍须解决的几个主要问题:

1.Build 成功,人工测试未通过时,如何一键回滚

2.数据库的更新和回滚如何实现自动化

发表评论
用户名: 匿名