2010-11-22 7 views
13

Pasamos de una combinación de CC/CC.NET a TeamCity.¿Cómo evito que TeamCity convierta vínculos simbólicos en archivos al usar el modo de pago del servidor con un servidor de Windows y un agente de Mac?

El núcleo de nuestro producto es Windows pero tenemos un agente de Mac.

Tenemos nuestro modo de comprobación de VCS establecido en "Automáticamente en el servidor". Lo que significa que la fuente se extraerá en el servidor (Windows) y luego se copiará a los agentes (incluido el agente Mac) según sea necesario.

Nuestro producto utiliza el marco BWToolkit para una parte de su interfaz de usuario. Esto significa que almacenamos el marco en nuestro control de fuente.

El problema es que la copia fuente del servidor de TeamCity arruina los enlaces simbólicos dentro del directorio de la infraestructura. Esto provoca que nuestro producto no se pueda compilar (error: BWToolkitFramework/BWToolkitFramework.h: No such file or directory).

Así es como un ls -l desde el interior del directorio marco de la raíz se ve en mi máquina:

total 24 
lrwxr-xr-x 1 myuser admin 35 Nov 22 10:45 BWToolkitFramework -> Versions/Current/BWToolkitFramework 
lrwxr-xr-x 1 myuser admin 24 Nov 22 10:45 Headers -> Versions/Current/Headers 
lrwxr-xr-x 1 myuser admin 26 Nov 22 10:45 Resources -> Versions/Current/Resources 
drwxr-xr-x 5 myuser admin 170 Nov 22 10:45 Versions 

y así es como se ve en la máquina de construcción:

total 24 
-rwxrwxr-- 1 root admin 40 Nov 19 16:21 BWToolkitFramework 
-rwxrwxr-- 1 root admin 29 Nov 19 16:21 Headers 
-rwxrwxr-- 1 root admin 31 Nov 19 16:21 Resources 
drwxrwxr-- 4 root admin 136 Nov 19 16:21 Versions 

Además en lugar de aparecer como enlaces en la máquina de creación (pequeña superposición de flecha en el icono), aparecen como archivos con el icono ejecutable de Unix. Si abre uno de estos archivos que debe haber un vínculo a obtener algo similar a lo siguiente (esto desde el enlace BWToolkitFramework):

link Versions/Current/BWToolkitFramework 

Esto parece ser un problema con la opción de pagar servidor en TeamCity porque climatizador es corriendo en la misma máquina haciendo un checkout SVN directo y no he tenido problemas.

¿Hay alguna manera de arreglar esto que no sea cambiar nuestra configuración de TeamCity para usar la opción SVN checkout on client?

Respuesta

13

He archivado este problema como TW-14499 con la esperanza de obtener una respuesta/corrección oficial.

Se marcó como un duplicado de TW-5953 Symlinks are not supported for SVN server-side checkout, por lo que este es un problema conocido que se ha abierto hace 2 años. Si alguien más se encuentra con esto, vote por/comente sobre el problema con la esperanza de que se solucione.

+1

Definitivamente necesitamos más votos allí ... –

2

Aquí es mi escenario:

  • necesito utilizar la caja del lado del servidor
  • estoy usando Git

Desde TeamCity no tiene esta revisión en su lugar, he creado un comando secuencia de comandos de línea para ejecutar inmediatamente después de que mis orígenes se actualicen con el siguiente ejemplo:

rm /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Headers 
rm /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Resources 

ln -s /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Versions/A/Headers  /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Headers 
ln -s /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Versions/A/Resources  /Git/MyLibrary/External/FacebookSDK/FacebookSDK.framework/Resources 

Esta secuencia de comandos está recreando los enlaces simbólicos en mi servidor mac.

6

Aparentemente, jgit ha solucionado esto a partir del 12/4/2014, por lo que TeamCity lo solucionará eventualmente. La solución es decirle a TC que use el agente del lado del cliente para las transferencias de git. enter image description here

Cuestiones relacionadas