12

一位开发人员正在向 CI 应用补丁并破坏了 CI 构建。错误发生在构建日志中,如下所示。我已经完成了以下步骤,但仍然无法正常工作。

  1. 我无法手动删除文件夹:35b0f615bcea75bd,尽管我对构建代理目录具有完全的写入和删除权限。
  2. 我试图运行强制干净结帐,仍然无法正常工作。
  3. 重新运行构建,仍然无法正常工作。

问题:

  1. 手动删除此文件是修复以下错误的最佳解决方案吗?
  2. 如果答案是“是”,我接下来应该尝试什么来删除此文件?
  3. 应用补丁时防止此错误再次发生的最佳方法是什么?

构建日志:

[18:32:28]Checking for changes
[18:35:15]Publishing internal artifacts
[18:35:15]Clearing temporary directory: D:\TeamCity\buildAgent\temp\buildTmp
[18:35:15]Checkout directory: D:\TeamCity\buildAgent\work\35b0f615bcea75bd
[18:35:15]Updating sources: server side checkout (2m:09s)
[18:35:16][Updating sources] Will perform clean checkout. Reason: Agent doesn't have any version of the project sources
[18:35:16][Updating sources] Building clean patch for VCS root: ProjectName Trunk
[18:37:24][Updating sources] Transferring cached clean patch for VCS root: ProjectName Trunk
[18:37:25][Updating sources] Repository sources transferred: 27.61Mb total
[18:37:25][Updating sources] Removing D:\TeamCity\buildAgent\work\35b0f615bcea75bd
[18:37:25][Updating sources] Error while applying patch: Failed to delete: D:\TeamCity\buildAgent\work\35b0f615bcea75bd\ProjectName\bin\Debug
[18:37:25]Publishing internal artifacts
[18:37:25]Build failed to start. Artifacts will not be published for this build
[18:37:26]Build finished
4

5 回答 5

11

我们在运行 Selenium 测试时遇到了这个问题,并且浏览器没有正确关闭。我们实际上创建了一个 powershell 脚本,我们将其作为构建在我们的任何代理上执行,它将杀死任何未完成的 IE 或 Firefox 或 Chrome 进程。我们还确保我们的测试总是在拆解时关闭浏览器。

如果您有足够的权限,您可以从 TeamCity Web 界面远程重新启动构建代理。您可以通过单击顶部的“代理”选项卡,选择有问题的代理,然后选择“重新启动代理机器”。您可以在TeamCity 文档中阅读更多内容。

于 2012-11-05T05:11:49.760 回答
10

问题 1. 是的,删除文件夹是解决当前情况的最佳选择。

问题2。每当我遇到这样的问题时,都是因为文件夹中有一个正在使用的文件无法删除。因此,我建议您使用TeamCity 服务器上的Process Monitor之类的工具来确定正在使用的文件。

问题 3。一旦你弄清楚了正在使用的东西,你就需要弄清楚为什么要再次停止它。

于 2012-10-24T07:47:02.630 回答
3

1.在我的情况下,是文件夹本身被锁定。TC 给出错误:[TEAMCITY TEMPLATE ERROR] 和“创建目录失败;已记录错误消息。”

2.使用 Unlocker 工具,我能够看到并修复“系统”对文件夹进行了锁定。这可能是由于 Teamcity 构建后没有正确清理吗?

3.如果是这样,看来我应该尝试使用 [Swabra][1] 插件来确保这种情况不会再次发生。

[1] http://confluence.jetbrains.com/display/TCD6/Adding+Swabra+as+a+Build+Feature

于 2013-02-13T19:00:31.373 回答
2

仅作记录:) 重新启动代理机器-> 这会重新启动机器(如书面的大声笑),而不仅仅是代理 :) ...这解决了我的问题。该文件夹可能已被某个进程锁定。

于 2014-08-12T13:44:26.980 回答
1

扩展@cezarypiatek 的答案:

如果您无权登录机器,可以尝试添加运行以下的 Powershell 构建步骤:

Get-Process chromedriver | kill
Get-Process chrome | kill

确保即使构建失败,也将步骤设置为运行。

然后您可以禁用此步骤,以备下次出现此步骤时使用。

于 2017-03-01T03:51:25.583 回答