Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why would a post-build step (xcopy) occasionally exit with code 2 in a TeamCity build?

Tags:

teamcity

xcopy

A few projects in my client's solution have a post-build event: xcopy the build output to a specific folder. This works fine when building locally. However, in TeamCity, I occasionally get

xcopy [...] exited with code 2

If I use regular copy, it exits with code 1. I expect this has something to do with file locks, although the specific files being copied are not the same, so perhaps just locking on the shared destination directory. I use /y to not prompt on overwriting files.

Why this fails in TeamCity but not locally?

like image 441
Tim Iles Avatar asked Oct 20 '11 11:10

Tim Iles


2 Answers

Even if you provide the /Y switch with xcopy, you'll still get an error when xcopy doesn't know if the thing you are copying is a file or a directory. This error will appear as "exited with code 2". When you run the same xcopy at a command prompt, you'll see that xcopy is asking for a response of file or directory.

To resolve this issue with an automated build, you can echo in a pre-defined response with a pipe.

To say the thing you are copying is a file, echo in F:

echo F|xcopy /y ... 

To say the thing you are copying is a directory, echo in D:

echo D|xcopy /y ... 

Sometimes the above can be resolved by simply using a copy command instead of xcopy:

copy /y ... 

However, if there are non-existent directories leading up to the final file destination, then an "exited with code 1" will occur.

Remember: use the /C switch and xcopy with caution.

like image 55
Metro Smurf Avatar answered Sep 19 '22 09:09

Metro Smurf


I fixed the error code 2 by adding a \ at the end of my path, without it, xcopy will think that it is a file instead of a folder.

like image 25
zOqvxf Avatar answered Sep 20 '22 09:09

zOqvxf