Не удалось создать каталог артефактов выпуска (доступ к пути 'C:\agent\_work\r1\a\NUL' запрещен.)

В последнее время мы сталкиваемся с досадной проблемой с нашими агентами сборки (2 отдельно установленные машины под управлением Windows 2016) с установленным агентом сборки VSTS. Когда мы бежим del "\\?\%CD%\nul" (см. "Супер пользователь"), он работает на пару сборок, а затем появляется снова.

Как и почему создается этот файл и как мы можем убедиться, что агент сборки не сломается?

Stacktrace ниже:

Failed to create Release artifact directory C:\agent\_work\r1\a with an exception
Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.ArtifactDirectoryCreationFailedException: Failed to create Release artifact directory 'C:\agent\_work\r1\a'. ---> System.UnauthorizedAccessException: Access to the path 'C:\agent\_work\r1\a\NUL' is denied.
   at System.IO.Win32FileSystem.DeleteFile(String fullPath)
   at System.IO.FileInfo.Delete()
   at Microsoft.VisualStudio.Services.Agent.Util.IOUtil.c__DisplayClass26_1.b__0(FileSystemInfo item)
   at System.Linq.Parallel.ForAllOperator`1.ForAllEnumerator`1.MoveNext(TInput& currentElement, Int32& currentKey)
   at System.Linq.Parallel.ForAllSpoolingTask`2.SpoolingWork()
   at System.Linq.Parallel.SpoolingTaskBase.Work()
   at System.Linq.Parallel.QueryTask.BaseWork(Object unused)
   at System.Linq.Parallel.QueryTask.RunTaskSynchronously(Object o)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
   --- End of inner exception stack trace ---
   at Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(String directoryPath, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.Execute(Action action). Retrying the creation of Release artifact directory.

1 ответ

Решение

Причина этой проблемы в нашем случае не связана с агентом сборки. Это был субмодуль тестирующего, который мы используем (testcafe), который создает файл. Оболочка, которая вызывает этот модуль, передает NUL как имя файла журнала... и это не обрабатывается должным образом в дальнейшем.

Другие вопросы по тегам