【问题标题】:The VSTS\TFS 2017 Release definition fails to create Release artifact directory at 'C:\Agents\DA_CID22\r1\a'VSTS\TFS 2017 发布定义无法在“C:\Agents\DA_CID22\r1\a”创建发布工件目录
【发布时间】:2019-05-04 00:00:48
【问题描述】:

最近我的一个发布定义遇到了这个错误,我无法弄清楚为什么会发生这种情况。

我尝试手动删除 r1 目录中的文件夹,但无法删除“a”文件夹,即工件目录,并说其中的文件夹或文件已在另一个程序中打开。但令人震惊的是'a'文件夹是空的,甚至没有隐藏的文件和文件夹。

作为一种解决方法,为了使版本成功部署,每当我想要部署新版本时,我都必须重新启动服务器。这真的很烦人。

以下是我在发布定义摘要中得到的完整错误。

错误(二)

 下载工件失败: Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.ArtifactDirectoryCreationFailedException: 无法创建发布工件目录“C:\Agents\DA_CID22\r1\a”。 ---> System.IO.IOException: 进程无法访问文件 '\?\C:\Agents\DA_CID22\r1\a' 因为它正在被另一个人使用 过程。在 System.IO.Win32FileSystem.RemoveDirectoryHelper(字符串 fullPath、布尔递归、布尔 throwOnTopLevelDirectoryNotFound) 在 System.IO.Win32FileSystem.RemoveDirectory(字符串 fullPath,布尔值 递归)在 Microsoft.VisualStudio.Services.Agent.Util.IOUtil.DeleteDirectory(字符串 路径,布尔值 contentsOnly,布尔值 continueOnContentDeleteError, CancellationToken 取消令牌)在 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(字符串 directoryPath, CancellationToken cancelToken) --- 内部结束 异常堆栈跟踪 --- 在 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(字符串 目录路径,CancellationToken 取消令牌)在 Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.Execute(操作 行动)在 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.CreateArtifactsFolder(IExecutionContext executionContext, String artifactsWorkingFolder) 在 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.d__34.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.d__31.MoveNext()

 创建Release工件目录失败 'C:\Agents\DA_CID22\r1\a'。

任何帮助或建议都会很有帮助。

【问题讨论】:

  • 您能给我们概述一下您的发布定义中的步骤吗?会期望其中一个进程保留在目录本身上吗?您是否在禁用所有步骤的情况下对其进行了测试?
  • @Rob Bos,是的,我在该版本定义中有 20 个步骤,我已禁用其中的 19 个步骤,我正在测试其中的一个 PowerShell 步骤。此版本定义中的步骤\任务类似于启动\停止服务、启动\停止 IIS、部署一些代码和执行 PowerShell 脚本。
  • @Rob Bos,当我尝试重新部署代码时,所有发布定义都面临这个问题。即使对于其中包含一项任务的发布定义,也会发生这种情况。使用它的过程我无法弄清楚。
  • 只是为了仔细检查:您为此使用了私人代理?检查过防病毒软件之类的东西?也许在这个旁边安装一个新的代理,看看是否有同样的问题?
  • @Rob Bos,作为一种解决方法,我也尝试过。我安装了新代理,但仍然是同样的问题。

标签: azure-devops azure-pipelines-release-pipeline azure-pipelines-build-task build-agent


【解决方案1】:

这种情况不时发生...我花了几天时间试图找出没有简单的解决方案(你尝试过的所有方法,我都尝试过),但要重新启动私人代理。我的结论是,代理进程不知何故被工件 Windows 文件夹挂起。您可以通过https://lockhunter.com/ 之类的程序看到这一点。这里没有一个简单的解决方案...有时您必须杀死未正确释放该文件的罪魁祸首进程,或者如果您幸运地使用之前所说的工具释放该文件的文件句柄...

【讨论】:

  • 这也发生在我们身上。我只是重新启动服务器。很高兴知道为什么/什么锁定了目录。
  • 根据需要使用 PowerShell Get-SmbOpenFile 然后 Close-SmbOpenFile。要访问构建服务器,您可以使用“Enter-PsSession”并运行上述命令。
猜你喜欢
  • 2018-07-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2018-07-24
  • 2017-05-06
  • 2021-01-30
  • 1970-01-01
相关资源
最近更新 更多