0

可能重复:
预构建任务 - 删除 CruiseControl.NET 中的工作副本

我想在 Cruisecontrol 构建过程中删除我的工作目录...我确信这很容易,但我一直找不到它的示例...

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

谢谢。

4

4 回答 4

4

两种方式之一。

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

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

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

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

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

Sidelight:CC.Net 很可能现在有一个自然的构建前清理操作。从那以后,我搬到了 TeamCity,它可以配置为每次构建或仅在开发人员选择时执行此操作(例如,当您知道您所做的更改不会干净地更新时 - 带有构建产品的目录的 svn 移动)头脑)。

于 2008-08-26T01:27:03.700 回答
0

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

如果您想在从源代码管理中检索到最新代码删除工作目录,则可以通过运行“cmd /c del directoryname”来使用 CruiseControl.NET 的可执行任务。

于 2008-08-25T21:32:53.343 回答
0

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

将执行递归删除的 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);
            }

        }


}



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

<任务>
    <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>
    <执行>
        <executable>Z:\SomePathToBuildScripts\YourCustomBat.bat</executable>
    </执行>
</任务>



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

于 2008-08-25T21:38:16.713 回答