Подтвердить что ты не робот

Teamcity v7.0.2 - файл каталога выписки не может быть удален при применении патча

Один из разработчиков применяет патч к CI и нарушил сборку CI. Ошибка произошла, как показано ниже в журнале построения. Я сделал следующие шаги и все еще не работает.

  • Я не смог удалить папку: 35b0f615bcea75bd вручную, хотя у меня есть полный доступ для записи и удаления в каталоги агента сборки.
  • Я попытался запустить Enforce clean checkout, все еще не работает.
  • Повторно запустите сборку, все еще не работает.

Вопросы:

  • Удаляет ли этот файл вручную лучшее решение для исправления ошибки ниже?
  • Если ответ "да", что я должен попробовать, чтобы удалить этот файл?
  • Каков наилучший способ предотвратить повторение этой ошибки при применении патча?

Журнал сборки:

[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
4b9b3361

Ответ 1

У нас была эта проблема при запуске тестов Selenium, и браузер не был правильно отключен. Мы фактически создали powershell script, который мы выполняем как сборку для любого из наших агентов, которые убьют любые выдающиеся процессы IE или Firefox или Chrome. Мы также обеспечили, чтобы наши тесты всегда закрывали браузер при разрыве.

Если у вас есть достаточно привилегий, вы можете удаленно перезапустить агент сборки из веб-интерфейса TeamCity. Вы это, нажав на вкладку "Агенты" вверху, выбрав агента-нарушителя, а затем выберите "Перезагрузить агент-агент". Вы можете прочитать больше в документации TeamCity.

Ответ 2

Вопрос 1. Да, удаление папки - лучший способ решить текущую ситуацию.

Вопрос 2. Всякий раз, когда у меня возникла проблема, это связано с тем, что в папке есть файл, который нельзя удалить. Поэтому я предлагаю вам использовать инструмент, например Process Monitor на сервере TeamCity, чтобы определить, какой файл используется.

Вопрос 3. После того, как вы разработали то, что было в использовании, вам нужно будет решить, зачем его снова останавливать.

Ответ 3

1. В моем случае это была сама папка, которая была заблокирована. TC дает ошибку: [ОШИБКА ТЕМПЕРАТУРЫ TEAMCITY] и "Не удалось создать каталог, зарегистрировано сообщение об ошибке".

2. Используя инструмент Unlocker, я смог увидеть и исправить, что "система" имела блокировку в папке. Возможно, это связано с тем, что сборка Teamcity не была должным образом очищена после себя?

3.Если так, похоже, я должен попытаться использовать плагин [Swabra] [1], чтобы это не повторялось.

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

Ответ 4

Только для записи:) Перезагрузите машину агента → Это перезагружает компьютер (как написано lol), а не только агент:)... и это решило мою проблему. Возможно, папка заблокирована процессом.

Ответ 5

Расширение ответа от @cezarypiatek:

Если у вас нет доступа к входу в систему, вы можете попробовать добавить следующий шаг сборки Powershell:

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

Убедитесь, что шаг установлен для запуска, даже если сборка завершилась с ошибкой.

Затем вы можете просто отключить этот шаг, готовый к использованию в следующий раз.