如何使用cc.net / cruiscontrol删除目录?

时间:2008-08-25 21:17:58

标签: cruisecontrol.net cruisecontrol

  

可能重复:
  Pre-build task - deleting the working copy in CruiseControl.NET

我想在巡航控制构建过程中删除我的工作目录...我确信这很容易,但我一直无法找到它的一个例子...

如果您知道如何创建目录,那么这也很有用。

感谢。

4 个答案:

答案 0 :(得分:4)

两种方式之一。

  1. 如果您已经在使用MSBuild文件或类似文件,请将操作添加到MSBuild文件中。
  2. 不是直接执行某些命令,而是创建一个执行该命令的批处理文件,然后删除该目录,并让CCnet调用该批处理文件。

答案 1 :(得分:0)

我的猜测是你希望在之前删除工作目录 CruiseControl.NET从源代码管理中获取最新代码。如果是这种情况,那么实现此目的的唯一方法是为CruiseControl.NET编写一个自定义源控件提供程序,首先删除工作目录,然后获取最新代码。查看CruiseControl.NET的源代码,了解如何编写源代码控制提供程序。

如果要在之后删除工作目录,从源代码管理中检索最新代码,则可以通过运行“cmd / c del directoryname”来使用CruiseControl.NET的executable task

答案 2 :(得分:0)

在ASP.NET工作中,对我来说,最简单的方法(允许我根据项目命中MSBUild或NAnt)是滚动我自己的exe,它接受一个我传入的参数由CC.NET触发的bat文件。它不是世界上最安全的东西,但是如果你完全控制你的自动构建机器;它不是太破旧。快速且可重复使用。

在执行递归删除的某处删除exe:

static void Main(string[] args)

{
        for (int n = 0; n < args.Length; n++)
        {
            if (Directory.Exists(args[n].ToString()))
            {
                Directory.Delete(args[n].ToString(), true);
            }

        }


}

{ for (int n = 0; n < args.Length; n++) { if (Directory.Exists(args[n].ToString())) { Directory.Delete(args[n].ToString(), true); } } }

将它放在某个地方,多个文件可以将参数传递给它,只需为每个项目编写一个自定义的.bat文件。所以我的任务块看起来像这样:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
        <workingDirectory>Z:\WorkingDirectory</workingDirectory>
        <projectFile>YourSolution.sln</projectFile>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
    </msbuild>
    <exec>
        <executable>Z:\SomePathToBuildScripts\YourCustomBat.bat</executable>
    </exec>
</tasks>



然后最后一步是设置.bat文件以在使用后执行删除/重建功能。在bat文件中,如果您希望将站点发布回它们,请确保重建(“MD”)您删除的目录。在我们的开发盒上,我发现这是防止心爱的Frankenbuild的最好方法。

答案 3 :(得分:0)

我过去这样做的方法是没有CC.Net结帐源本身。相反,项目有两个<msbuild>元素,第一个调用构建目标运行svn-clean.pl(编译为.exe),然后使用svn.exe更新源。第二个<msbuild>元素启动主构建过程。

您可以使用delete命令轻松替换svn-clean。对于我的项目,从结帐中删除箔条总是比检查新的工作副本更快。

两个msbuild元素是必需的,因为主项目构建文件经常更新。这很重要,因为只有在启动新的msbuild进程时才会重新加载对构建文件的更新。

当我(很少)移动或更改该clean-and-update构建目标的依赖关系到msbuild进程需要重新加载以获得运行clean-and-update目标的有效指令的程度时,此设置会中断。发生这种情况时,我会在提交之前停止CC.Net,进入CC.Net服务器,并手动进行'svn update'。

Sidelight:很可能CC.Net现在有一个自然的清洁前构建操作。我已经转移到TeamCity,它可以配置为每次构建时执行此操作,或者仅在开发人员选择时(例如,当您知道自己进行了无法更新的更改时 - 使用构建产品的目录的svn移动来到记)。