2012-10-24 1 views
11

개발자 중 하나가 CI에 패치를 적용하고 CI 빌드를 손상 시켰습니다. 빌드 로그에서 아래와 같이 오류가 발생했습니다. 나는 아래 단계를 밟았지만 여전히 작동하지 않는다.Teamcity v7.0.2 - 패치 적용시 체크 아웃 디렉토리 파일을 삭제할 수 없습니다.

  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 

답변

10

질문 1. 예는, 폴더를 삭제하면 현재의 상황을 해결하는 것이 가장 좋습니다.

질문 2.이 문제는 내가 삭제할 수없는 폴더에 사용중인 파일이 있기 때문에 발생했습니다. 그래서 TeamCity 서버에서 Process Monitor과 같은 도구를 사용하여 어떤 파일이 사용 중인지 알아내는 것이 좋습니다.

질문 3. 사용한 내용을 해결 한 후에 다시 중지해야하는 이유를 알아야합니다.

11

Selenium 테스트를 실행할 때 브라우저가 제대로 종료되지 않았기 때문에이 문제가 발생했습니다. 실제로 우리는 Powershell 스크립트를 작성하여 뛰어난 IE 나 Firefox 또는 Chrome 프로세스를 중단시킬 에이전트의 빌드로 실행합니다. 우리는 또한 우리의 테스트가 해체시 항상 브라우저를 닫도록했습니다.

충분한 권한이있는 경우 Teamcity 웹 인터페이스에서 빌드 에이전트를 원격으로 다시 시작할 수 있습니다. 상단의 Agents (에이전트) 탭을 클릭하고 문제가되는 에이전트를 선택한 다음 "Reboot Agent Machine (에이전트 머신 재부팅)"을 선택합니다. TeamCity documentation에서 자세한 내용을 볼 수 있습니다.

+2

우리는 이것을 가지고 있습니다 - 실제로 컴퓨터를 재부팅 할 필요가 없습니다. 로그인하여 작업 관리자로 가서 chrome.exe와 chromedriver.exe 프로세스를 중단하십시오. 우리를 위해 트릭을했습니다. – soupy1976

+0

I 이 정확한 시나리오를 실행했습니다. PS 스크립트를 게시 할 수 있습니까? –

+1

Get-Process 크롬 드라이버 | 죽이다 – cezarypiatek

3

1. 내 경우에는 잠긴 폴더 자체입니다. TC에서 [TEAMCITY TEMPLATE ERROR] 및 "디렉토리를 만들지 못했습니다. 오류 메시지가 기록됩니다."라는 오류 메시지가 나타납니다.

2. Unlocker 도구를 사용하여 '시스템'이 폴더를 잠근 것을보고 해결할 수있었습니다. Teamcity 빌드 자체가 제대로 정리되지 않았기 때문일 수 있습니다.

3. 그렇다면 [Swabra] [1] 플러그인을 사용하여 재발을 방지해야합니다.

[1]

2

http://confluence.jetbrains.com/display/TCD6/Adding+Swabra+as+a+Build+Feature 그냥 에이전트 시스템을 재부팅 :) 기록을 위해 ->이 (LOL 작성된) 및뿐만 아니라 에이전트 :) ... 그리고 그건 내 문제를 해결 시스템을 재부팅합니다. 폴더가 프로세스에 의해 잠겼을 수 있습니다.당신이 컴퓨터에 로그인 할 수있는 권한이없는 경우

, 당신은 실행 파워 쉘 빌드 단계 추가 시도 할 수 : @cezarypiatek의 답변을 확장

1

확인

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

을 그 단계는 빌드가 실패하더라도 실행되도록 설정됩니다.

이 단계를 사용 중지하면 다음 번에 사용할 준비가됩니다.

관련 문제