【问题标题】:How can I clear out my CruiseControl.Net working directories after a build?构建后如何清除 CruiseControl.Net 工作目录?
【发布时间】:2011-06-08 15:47:50
【问题描述】:

我想在站点部署后清除 CruiseControl.NET 构建中的工作目录,因为空间是个问题,不需要保留它。

目前一切都在一台机器上的设置方式(这不太可能改变),它同时充当 Mercurial 存储库服务器、测试 Web 服务器和 CruiseControl.NET 构建服务器。 所以在 C:\Repositories\ 和 C:\inetpub\wwwroot\ 我们每个网站都有一个文件夹。同样在 C:\CCNet\Projects 中,每个网站的每个构建类型(测试和实时)都有一个文件夹 - 这意味着我们在服务器上每个网站至少有 4 个副本,每个站点大约 100mb X 100 个站点这增加了很多磁盘空间。

我想我想做的是在成功构建时简单地删除工作目录,只需 5-10 秒即可完全获得一个新副本(构建服务器与 hg 是同一台机器的一个小优势服务器),并且只保留少数相对活跃的项目。在 100 个左右的站点中,我们可能会在一周内处理不超过 10 个(5 人团队)。 我已经尝试了一项将 cmd.exe 运行到 /del /s /q 工作目录文件夹的任务。有时这会成功完成,有时会失败并显示“该进程无法访问该文件,因为它正被另一个进程使用”的消息。当它完成时,构建再次开始,大概是因为没有找到 WD 并且需要重新创建它,所以我发现我在那里处于一个永无止境的循环中。

有什么方法可以减少运行这些构建所需的空间量,还是我需要整理一个业务案例来增加我们服务器的托管成本?

【问题讨论】:

    标签: cruisecontrol.net


    【解决方案1】:

    您需要创建自己的 ccnet 任务并将逻辑构建到其中。

    1. 创建一个名为 ccnet.[pluginname].plugin 的新项目。
    2. artifact cleanup task source 为基础,快速上手
    3. 将基本目录从 result.ArtifactDirectory 更改为您需要的任何内容
    4. 编译并将\bin\Debug\ccnet.[pluginname].plugin.dll 放置到c:\Program Files\CruiseControl.NET\server 或安装CCNET 的任何位置。
    5. 重新启动服务,您应该能够以与工件清理任务非常相似的方式使用您的任务

    【讨论】:

    • 好主意,但工件清理发布者似乎只在工件目录中工作,并且与工作目录处于同一级别。我无法让它在工件之外的任何东西上工作。
    • @西蒙·马丁。可惜没用。我想唯一的其他选择是创建自己的 cc.net 任务。这很简单。我只是要更新答案
    • Yowser - 这比我想象的更严重,解决方案是减少创建构建时使用的空间量。不过,可能有助于将业务案例放在一起以获得更多磁盘空间。
    • 新任务应该不会花很长时间来完成,因为您将扩展一些已经工作的东西。但是,如果您可以轻松获得更多空间,则应该不时手动清除文件夹。服务器是物理机还是虚拟机?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多