2012-10-24 5 views
11

Jeden z programistów stosuje poprawki do CI i zepsuł kompilację CI. Błąd wystąpił poniżej w dzienniku kompilacji. Zrobiłem poniższe kroki i nadal nie działa.Teamcity v7.0.2 - plik katalogu kasowania nie może zostać usunięty podczas stosowania poprawki

  1. Nie można usunąć folderu: 35b0f615bcea75bd ręcznie mimo że mam pełny dostęp do zapisu i usuwania do katalogów agenta kompilacji.
  2. Próbowałem uruchomić Egzekwuj czystą kasę, nadal nie działa.
  3. Ponownie uruchom kompilację, nadal nie działa.

Pytania:

  1. usuwa ten plik ręcznie najlepszym rozwiązaniem, aby rozwiązać poniższy błąd?
  2. Jeśli odpowiedź brzmi "tak", co powinienem spróbować, aby usunąć ten plik?
  3. Jaki jest najlepszy sposób, aby zapobiec wystąpieniu tego błędu podczas stosowania poprawki?

dziennika budowy:

[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 

Odpowiedz

10

Pytanie 1. Tak, usuwając folder jest najlepszym rozwiązać obecną sytuację.

Pytanie 2. Ilekroć miałem taki problem, było to spowodowane tym, że w folderze znajduje się plik, którego nie można usunąć. Sugeruję więc, aby użyć narzędzia takiego jak Process Monitor na serwerze TeamCity, aby sprawdzić, który plik jest używany.

Pytanie 3. Po ustaleniu, co było w użyciu, należy ustalić, dlaczego należy go ponownie zatrzymać.

11

Wystąpił ten problem podczas uruchamiania testów Selenium, a przeglądarka nie została poprawnie zamknięta. W rzeczywistości stworzyliśmy skrypt PowerShell, który wykonamy jako kompilację na którymkolwiek z naszych agentów, który zabije wszelkie wyjątkowe procesy IE, Firefox lub Chrome. Zapewniliśmy również, że nasze testy zawsze zamykają przeglądarkę po rozpadzie.

Jeśli masz wystarczające uprawnienia, możesz zdalnie zrestartować agenta kompilacji z interfejsu sieciowego TeamCity. Możesz to zrobić, klikając kartę Agenci u góry, wybierając agenta naruszającego prawa, a następnie wybierz "Ponownie uruchom komputer agenta". Możesz przeczytać więcej w TeamCity documentation.

+2

Mieliśmy to - nie musisz ponownie uruchamiać maszyny, możesz się do niego zalogować, przejdź do Menedżera zadań i zatrzymaj procesy chrome.exe i chromedriver.exe, które nam pomogły – soupy1976

+0

Właśnie natknąłem się na ten dokładny scenariusz. Czy jest szansa, że ​​możesz opublikować ten skrypt PS? –

+1

Chromowa kontrolka Get-Process | zabić – cezarypiatek

3

1. W moim przypadku był to sam folder, który został zablokowany. TC daje błąd: [BŁĄD szablonu TEAMCITY] i "Błąd utworzenia katalogu, komunikat o błędzie jest rejestrowany".

2. Korzystając z narzędzia Unlocker, mogłem zobaczyć i naprawić, że "system" miał blokadę na folderze. Być może było to spowodowane kompilacją Teamcity, która nie naprawiała sama po sobie?

3. Jeśli tak, to wygląda na to, że powinienem spróbować użyć wtyczki [Swabra] [1], aby się upewnić, że to się nie powtórzy.

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

2

Tak dla przypomnienia :) zrestartować maszynę agenta -> To restartuje maszynę (jak napisano lol), a nie tylko środkiem :) ... i rozwiązać mój problem. Folder mógł zostać zablokowany przez proces.

1

Rozwijając na odpowiedź od @cezarypiatek:

Jeśli nie masz dostępu do logowania do urządzenia, można spróbować dodać etapu budowy PowerShell, który działa:

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

Upewnić się, że krok jest uruchamiany, nawet jeśli kompilacja się nie powiedzie.

Następnie można po prostu wyłączyć ten krok, gotowy do użycia następnym razem, gdy to się pojawi.

Powiązane problemy