2011-01-02 10 views
8

Digamos que tengo dos "proyectos" dentro de TeamCity, que son dos sitios web, que usan una biblioteca compartida que no está dentro de la ruta svn del sitio web. Aquí está la estructura SVN para que sea más claro:Cómo gestionar proyectos compartidos correctamente en TeamCity

Un sitio web: (biblioteca utiliza compartió una) // root/web/websiteâ

Sitio B:: SVN SVN: // root/web/websiteb (utiliza la biblioteca compartida b)

compartido biblioteca a: svn: // root/shared/Liba

compartido biblioteca B: svn: // root/shared/libB

¿Cómo voy a configurar un proyecto TeamCity para el sitio web a? En este momento lo tengo que apuntar a la raíz svn: //, pero eso haría que desencadene una compilación incluso si se cambió el sitio web b o la biblioteca compartida b, lo cual no es correcto. Lo que realmente necesito es una forma de desencadenar una compilación solo si hay un cambio en svn: // root/web/websitea O en svn: // root/shared/liba.

Intenté configurar dos raíces de vcs dentro del mismo proyecto que apuntan a las dos rutas de svn anteriores, sin embargo, no parece haber una manera de establecer un directorio de trabajo para cada raíz de vcs. Por esta razón, terminó simplemente copiando el contenido de las dos rutas svn directamente en la raíz de mi directorio de compilación en lugar de colocarlas en los lugares correctos (C: \ Build \ Web \ WebsiteA & C: \ Build \ Shared \ LibA)

Respuesta

13

La funcionalidad de las reglas de pago de TeamCity es compatible con la configuración que está describiendo. Mi equipo lo usa para hacer algo similar a lo que estás tratando de hacer.

Primero, configure una sola raíz SVN. La URL de esta raíz sería algo como esto:

svn://root/ 

A continuación, configure las siguientes reglas de finalización de compra.

Para Proyecto A:

+:web/websitea=>/web/websitea 
+:shared/liba=>/shared/liba 

Para el proyecto B:

+:web/websiteb=>/web/websiteb 
+:shared/libb=>/shared/libb 

La documentación TeamCity en reglas de comprobación no es totalmente claro sobre este punto, pero sólo los caminos particulares que se han incluido ser utilizado para desencadenar construcciones. Esto debería cumplir con su necesidad de tener solo cambios en el sitio web y liba desencadenar su compilación (y lo mismo para B).

+0

¡Eso es lo que estaba buscando, gracias! – Justin

+2

Las asignaciones de ruta (=>) no son del todo necesarias en este caso, ya que las rutas son las mismas y sin ellas TeamCity tomaría por defecto las rutas con el mismo nombre. Podría ser útil mapear rutas con diferentes nombres si eligió diferentes rutas al verificar los repositorios en directorios de trabajo durante el desarrollo (en cuyo caso las referencias del proyecto pueden ser rutas relativas que no coinciden con las ubicaciones relativas del rutas en el repositorio de control de origen). Ver: http://confluence.jetbrains.net/display/TCD6/VCS+Checkout+Rules – rohancragg

6

Además de lo que Eric mencionó, si necesita revisar la raíz de origen completa, pero solo desencadenar la compilación en rutas particulares, puede editar las reglas de desencadenante de VCS en la sección Generar desencadenador para tener algo como:

+:web/websitea 
+:share/liba 
Cuestiones relacionadas