[teamcity] 왜 빌드 후 단계 (xcopy)가 TeamCity 빌드에서 코드 2와 함께 종료됩니까?

내 클라이언트 솔루션의 일부 프로젝트에는 빌드 후 이벤트 ( xcopy특정 폴더에 대한 빌드 출력)가 있습니다. 이것은 로컬에서 빌드 할 때 잘 작동합니다. 그러나 인 TeamCity에, 나는 가끔 얻을

xcopy […] 코드 2로 종료되었습니다.

regular을 사용하면 copy코드 1로 종료됩니다. 복사되는 특정 파일이 동일하지 않더라도 파일 잠금과 관련이 있으므로 공유 대상 디렉토리에서 잠글 수 있습니다. 내가 사용하는 /y파일을 덮어 쓰기에없는 프롬프트.

TeamCity에서는 실패하지만 로컬에서는 실패하는 이유는 무엇입니까?



답변

/Yxcopy와 함께 스위치 를 제공하더라도 xcopy가 복사하는 것이 파일인지 디렉토리인지 알지 못하면 오류가 계속 발생합니다. 이 오류는 “exited with code 2″로 나타납니다. 명령 프롬프트에서 동일한 xcopy를 실행하면 xcopy가 파일 또는 디렉터리의 응답을 요청하는 것을 볼 수 있습니다.

자동화 된 빌드로이 문제를 해결하려면 파이프를 사용하여 미리 정의 된 응답으로 에코 할 수 있습니다.

복사하는 것이 파일이라고 말하려면 echo in F:

echo F|xcopy /y ...

복사하는 것이 디렉토리라고 말하려면 echo in D:

echo D|xcopy /y ...

때때로 위의 문제는 xcopy 대신 복사 명령을 사용하여 해결할 수 있습니다.

copy /y ...

그러나 최종 파일 대상으로 이어지는 존재하지 않는 디렉토리가있는 경우 “exited with code 1″이 발생합니다.

기억하십시오 : /C스위치와 xcopy를주의해서 사용하십시오 .


답변

내 경로 끝에 \를 추가하여 오류 코드 2를 수정했습니다.이 코드가 없으면 xcopy는 폴더가 아닌 파일이라고 생각합니다.


답변

빌드 후 이벤트에서 xcopy를 사용하는 경우 / C 외에 / Y 스위치를 사용합니다.

/C           Continues copying even if errors occur.
/Y           Suppresses prompting to confirm you want to overwrite an existing file.


답변

이 문제에 대한 수정 사항은 대상 bin 폴더로 이동하여 적절한 하위 폴더가 있는지 확인하는 것이 었습니다. 해당 하위 폴더가 수동으로 생성되면 빌드 프로세스가 성공적으로 완료되었습니다.


답변

copy나를 위해 고쳤습니다. xcopy with /c /y작동하지 않았다. 나는 출구 4를 얻고 있었기 때문에 함께 xcopy갔지만 주위에 따옴표가 필요하다는 것이 밝혀졌습니다 ($TargetPath).

내 스크립트 :

if $(ConfigurationName) == Debug copy "$(TargetPath)" "$(SolutionDir)\Folder\bin\Debug\$(TargetFileName)"


답변

아마도 git과 함께 TeamCity를 사용하고있을 것입니다. 그렇다면 복사하려는 폴더 가 git 저장소에 있는지 확인하십시오 . 일반적으로 git aviod는 빈 프로젝트 폴더를 저장소에 추가하므로 xcopy찾지 못하고 오류가 발생합니다.

빈 폴더에 빈 텍스트 파일을 추가하고 커밋하고 저장소에 폴더가 나타나는 것을 볼 수 있습니다.


답변