Pregunta

Tengo dos soluciones en su correspondiente carpeta, por ejemplo,

  1. SolutionA\SolutionsA.sln
  2. SolutionB\SolutionB.sln

Cada solución tiene cerrada Registro de acumulación configurado; es decir, dos definiciones de compilación GatedSolutionA y GatedSolutionB.

Ahora la situación es, si me registro cambios en ambas carpetas junto TFS muestra un cuadro de diálogo para seleccionar acumulación (desplegable con GatedSolutionA, GatedSolutionB) para correr contra el conjunto de cambios. Mi conjunto de cambios tiene cambios de última hora en la solución B y no romper los cambios en la solución A. decir Construir GatedSolutionB fallaría pero GatedSolutionA pasaría.

Cuando selecciono GatedSolutionA para construir en contra de mi conjunto de cambios, TFS comprueba en que, en hojas se vuelven la solución B en el estado roto y el propósito del registro de entrada cerrada es derrotado por la solución B.

Si cambio el gatillo de CI para definiciones de compilación, TFS colas tanto construcciones.

Lo que yo busco es decir mismo comportamiento Toda la cerrada construye se ponen en cola y si uno de ellos falla, conjunto de cambios debe ser rechazada.

Nota: : No quiero crear una definición única de construcción, tanto para las soluciones. Además, sé que podemos evitar este problema a suceder mediante la creación de dos conjuntos de cambios separadas, pero esto es generalmente ocurriendo cuando los desarrolladores no son conscientes de que tienen algunos archivos que se comprueba por otra solución que se está trabajando en.

Actualización 2019

Desde TFS y Azure DevOps han empezado a utilizar GIT y tire de solicitud - con ayuda de las políticas del poder (en la rama principal) se puede añadir más de una construcción cheques por ejemplo, los cambios en SolutionA\* ruta, BuildA se puede configurar para poner en cola, controlados y, de manera similar a los cambios en SolutionB\* ruta, BuildB se puede configurar para poner en cola, controlados y, por consiguiente, para una confirmación que tienen los cambios en ambos caminos pondrá en cola tanto en las compilaciones de comprobación. Esperar a que el uso de GIT valió la pena.

Políticas Branch: https://docs.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops#build-validation

Nota: la documentación no se actualiza para mostrar el filtro de ruta, y el defecto se eleva en github aquí https://github.com/MicrosoftDocs/vsts-docs/issues/3235 . Como tal, el filtro está disponible en Azure DevOps y el servidor.

¿Fue útil?

Solución

Yo sé que usted dijo que "no desea crear definición de construcción única, tanto para las soluciones", pero que en realidad eres única opción viable aquí. Lo que me gustaría sugerir es que tiene dos ramas, una para el desarrollo de funciones y una para la integración. Haga que sus desarrolladores trabajan en la rama de la característica (Es) y el uso de lo establecido (o CI) Country construye para esas soluciones. Periódicamente combinar los cambios en la rama de la característica (es) en una rama de integración que tiene una sola definición de facturación en construcción residencial que construye todas sus soluciones. Eso mantendrá las compilaciones de su rama de integración limpio.

Otros consejos

@Gchaves encontró una solución para ese problema, puede ir a "Editar Definiciones construir" y en la pestaña "espacio de trabajo" si configura su "Carpeta de control de código fuente" a la carpeta interior, donde se tiene SolutionA.

Por ejemplo, si usted tiene este sistema de archivos:

  1. Proyectos \ SolutionA \ SolutionA.sln
  2. Proyectos \ SolutionB \ SolutionB.sln

Ahora bien, si se configura "Carpeta de origen Control" y "Construir Agente carpeta" para Proyectos \ SolutionA, el registro de entrada cerrada se activarán únicamente cuando intenta CheckIN SolutionA, y sólo compilará SolutionA.sln (para este para ser verdad que debe tener para apuntar simplemente a SolutionA.sln el proceso de pestañas -> 1.Required-> ProjectsToBuild)

Y a continuación, puede tener varias soluciones bajo mismo espacio de trabajo, la construcción, el registro y etiquetado de forma independiente:)

En la definición de construcción en la pestaña de Procesos se puede elegir más de un ganglio centinela para construir.

Una solución a este problema es que los desarrolladores tienen diferentes áreas de trabajo asignadas para las soluciones separadas. Si no hay código de solapamiento entre las soluciones y que está tratando de evitar que un desarrollador de comprobar en una única solución cuando son cerradas construir otra solución, entonces se deben utilizar diferentes espacios de trabajo.

Si usted tiene WorkspaceA para SolutionA y WorkspaceB para SolutionB, entonces el diálogo de cambios pendientes sólo mostrará los cambios realizados en el espacio de trabajo adecuado.

Como usted dice, sabes que se puede evitar mediante el uso de conjuntos de cambios separadas. Así es como se puede "forzar" a los desarrolladores utilizar dos conjuntos de cambios separadas y evitar los "desarrolladores no son conscientes ..." situación.

Crear los espacios de trabajo para ellos y revocar su permiso "Crear un espacio de trabajo", por lo que no pueden hacer uno que incluye ambas áreas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top