CruiseControl.NET生成后操作

时间:2020-03-06 14:31:44  来源:igfitidea点击:

我们在ASP.NET应用程序上安装了CC.NET。在构建项目时,将对ASP.NET应用程序进行预编译,然后将其复制到网络共享中,服务器将从该网络共享中运行该应用程序。

该服务器与开发箱有所不同,并且在我们的暂存环境中,下一个服务器的差异更大。区别在于特定的配置文件等等,因此我想在将预编译的应用程序复制到网络共享之前排除某些文件或者将其删除。

我的配置文件如下所示:

<project name="Assembly.Web.project">
    <triggers>
        <intervalTrigger seconds="3600" />
    </triggers>
    <sourcecontrol type="svn">
        <trunkUrl>svn://svn-server/MyApp/Web/Trunk</trunkUrl>
        <workingDirectory>C:\build-server\Assembly\Web\TEST-HL</workingDirectory>
    <executable>C:\Program Files (x86)\SVN 1.5 bin\svn.exe</executable>
    <username>uid</username>
    <password>pwd</password>
    </sourcecontrol>
    <tasks>
        <msbuild>
          <executable>C:\Windows\Microsoft.NET\Framework64\v3.5\MSBuild.exe</executable>
          <workingDirectory>C:\build-server\Assembly\Web\TEST-HL</workingDirectory>
          <projectFile>C:\build-server\Assembly\Web\TEST-HL\Web\Web.sln</projectFile>
          <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
          <targets>Build</targets>
          <timeout>900</timeout>
          <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
        </msbuild>
    </tasks>
    <publishers>
        <buildpublisher>
             <sourceDir>C:\build-server\Assembly\Web\PrecompiledWeb</sourceDir>
             <publishDir>\test-web01\Web</publishDir>
             <useLabelSubDirectory>false</useLabelSubDirectory>
             <alwaysPublish>false</alwaysPublish>
        </buildpublisher>           
    </publishers>
</project>

如我们所见,我使用buildPublisher将预编译的文件复制到网络共享。我要在这里做的是1)在复制某些文件之前将其删除,或者2)在复制这些文件之后将其替换。

我不想让某些应用程序运行时监视特定文件的更改,然后将其替换为其他文件。我希望由CC.NET完成或者由CC.NET触发。

可以使用CC.NET启动.bat文件吗?

解决方案

我将NAnt任务用于所有发布,部署,清理等工作。

我们必须将NAnt用于此类内容。
这是南特的任务参考。

看一下MSDEPLOY或者Web部署项目。有一个问题将在此处提供更多详细信息

当然,CruiseControl.NET可以运行批处理文件,只需使用exec任务即可。但是,一个简单的答案可能只是让MSBuild为我们完成任务。在后编译目标中添加一些步骤应该很简单。