¿Cómo se incorporan múltiples repositorios TFS en un solo trabajo de Jenkins?

Tengo un repositorio que tiene 2 subcarpetas $/Repo/project y $/Repo/thirdparty. Necesito llevar ambos a Jenkins para una sola compilación. Naturalmente, intenté simplemente extraer $/Repo, pero esto me da un montón de otros proyectos junto con encuestas falsas (se generará cada vez que CUALQUIER COSA se registre en $/Repo). He intentado usar el complemento multi-scm que funciona, pero no guarda la configuración (molesto, pero no inutilizable). Intenté usar el complemento tfs normal y colocar manualmente las llamadas para el otro repositorio en un comando de Windows (esto no funcionó incluso cuando las vinculé a diferentes carpetas).

¿Cuál es la mejor manera de abordar esto? ¿Algún tipo de subtrabajo que atrae a un tercero? ¿Arreglar el complemento múltiple scm? ¿Hay algún comando o disparador tfs para extraer un repositorio diferente cuando extrae un proyecto?

preguntado el 03 de mayo de 12 a las 13:05

¿Está utilizando el mismo tipo de repositorio para todos los proyectos? Todo de TFS? -

Sí, todos son parte del mismo repositorio. -

Entonces estás... bueno... jodido. Hay dos formas de hacerlo: implementar la función multirepo en el complemento TFS (como SVN y git ya lo han hecho), o con el complemento multi-scm, pero fue diseñado con un propósito diferente en mente. De todos modos, no hay opción por ahora. -

¿Crees que despedir un trabajo para sacar las cosas de terceros (como un trabajo dependiente separado) o algo funcionaría? -

¿Alguna idea de por qué el complemento + las llamadas manuales no funcionaron? -

6 Respuestas

Pude hacer que esto funcionara con una tubería de trabajo. Es un poco hacky, pero funciona.

El programa que estoy tratando de construir utiliza $/Department/Framework/Main (Como se workspace\Framework), y $/Department/Products/TheProgram/Main (Como se workspace\TheProgram).

Creé tres trabajos en Jenkins, cada uno "aguas abajo" del otro:

  • Framework-Get: activación normal del código fuente en la ruta del proyecto de TFS $/Department/Framework/Main. Sin paso de construcción.
  • TheProgram-Get: activación normal del código fuente en la ruta del producto de TFS $/Department/Products/TheProgram. Sin paso de construcción.
  • TheProgram-Build: Sin control de código fuente. Pero los pasos de compilación copian la fuente de los dos pasos anteriores. Luego, puede ejecutar un paso de compilación normal.

El primer paso de compilación de TheProgram-Build es un comando por lotes de Windows:

REM =============================================================================================================================================================================================================================================================================== mkdir Framework xcopy /y /q /e ..\..\Framework-Get\Workspace\Framework Framework REM ========================== ========== REM Luego obtenga la carpeta TheProgram: rmdir /s/q TheProgram mkdir TheProgram xcopy /y /q /e ..\..\TheProgram-Get\Workspace\TheProgram TheProgram

El segundo paso de compilación fue una simple llamada a ant. Pero podrías usar msbuild o lo que quieras aquí.

Respondido el 06 de diciembre de 12 a las 20:12

El complemento TFS para Jenkins actualmente no admite la verificación de las fuentes desde múltiples ubicaciones. multiple-scm-plugin podría ser la respuesta, pero como usted señaló en la pregunta, en realidad no es una opción en este momento. Realmente, hasta donde puedo ver, solo hay posibles soluciones para que las pruebe:

  1. Cree un espacio de trabajo dentro de TFS que incluirá todas las importaciones necesarias. Uso esta funcionalidad en mis encuentros diarios con TFS, aunque nunca tuve la oportunidad de usarla con el complemento de Jenkins. Puede que funcione, puede que no.
  2. Puede usar, y por favor, esta es una opción bastante seria, al menos para mí, git. Hay un git-tfs e importe todos los proyectos requeridos en el repositorio de git. Y tenerlos en git abrirá un montón de posibilidades para usted, incluido el uso de repositorios separados para cada carpeta, el uso de módulos de git, externos de git... y así sucesivamente. Así que, al menos para mí, es una opción válida, aunque a primera vista parece una solución fea...

contestado el 04 de mayo de 12 a las 14:05

Gracias por la respuesta. Usamos git aquí para algunas cosas, y me gusta mucho, pero cuando se trata de desarrolladores de .NET, quieren usar tfs. Probaré algunas de las soluciones que discutimos y veré cómo se desarrolla. - tyler smith

Bueno, git-tfs les permitirá usar TFS de todos modos, y Git solo estará cubierto por Jenkins. Y entiendo por qué quieren usar TFS (principalmente de estrecha integración con VS.Net), pero en el lado de la historia de compilación/archivo/distribución, Git en realidad es más adecuado para el trabajo. Creo que deberías probar ambos y usar el que se adapte Usted y Jenkins mejor, ya que ninguno de ellos interferirá con los desarrolladores de VS.Net y TFS. - Łukasz Rżanek

El complemento TFS admite la capacidad de ocultar carpetas en su $\Repo que no le interese. Los registros en carpetas encubiertas no activarán una compilación. Desafortunadamente, pueden ser muchas carpetas y solo está interesado en dos: necesitaría mantener la lista de carpetas encubiertas a medida que se agregan nuevas.

Evitamos el complemento TFS y, en su lugar, programamos la configuración de nuestros espacios de trabajo TFS a través del paso powershell utilizando la línea de comandos tfs. Cada compilación especifica las carpetas que quiere y el script se encarga de ocultar/desocultar el resto.

Respondido 08 Feb 18, 17:02

Mi solución a esto es crear dos trabajos, uno que simplemente descargue su dependencia y otro para hacer la compilación.

En mi caso manejé la compilación con las propiedades de Maven, por ejemplo:

pom.xml

<properties>
  <my.dir>../MyDir</wsdl.dir>
</properties>

Construcción de Jenkins

Goals clean package -U -Dmy.dir=${WORKSPACE}/../../another-build/workspace/MyDir

Respondido 09 Abr '15, 15:04

Tuve que crear una solución alternativa para Jenkins. Esto se logró utilizando tanto TF como PowerShell Snapin Microsoft.TeamFoundation.PowerShell.

Básicamente, el flujo de trabajo es el siguiente:

Get-TFsWorkspace (Powershell: para comprobar el espacio de trabajo)

TF Workspace /nuevo (Para crear un espacio de trabajo)

TF Workfold /unmap (utilice esto para eliminar la asignación $/ predeterminada que se realiza durante la creación del espacio de trabajo)

TF Workfold /map (Para mapear ubicaciones específicas, es decir, $/Repo/proyecto)

TF Scorch (para eliminar cualquier artefacto si lo hay)

TF Get (Para obtener el código)

Puede haber otros métodos que las personas tengan, pero esto también le permitiría usar la funcionalidad tf Workfold /cloak.

Aclamaciones,

Espero que esto ayude.

Respondido 10 Jul 15, 21:07

Puede confirmar que Multiple SCM 0.5 funciona con el complemento Team Foundation Server 4.0

Sin embargo, la votación parece romperse.

respondido 09 nov., 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.