Azure Devops que ejecuta dos compilaciones secuencialmente

Oct 26 2020

Tenemos la configuración de Azure Devops. En este momento, nuestro proyecto se construirá dos veces.

Una vez durante el registro de solicitud de extracción en el archivo YAML y otra debido a la configuración de compilación (imagen a continuación).

Esto activa dos compilaciones y hace que nuestro tiempo de compilación se duplique. Nuestro equipo de Devops mencionó que esta es una práctica habitual. ¿Por qué Azure Devops no activa solo una compilación o es una práctica más segura con dos compilaciones?

Respuestas

1 KevinLu-MSFT Oct 27 2020 at 01:42

¿Por qué Azure Devops no activa solo una compilación o es una práctica más segura con dos compilaciones?

Hasta donde yo sé, este es el flujo de trabajo esperado de Azure Devops.

debido a la configuración de compilación

Este es el disparador Pull Request .

Este disparador ocurre en el proceso de Pull Request, el disparador PR está destinado a ejecutarse cada vez que se crea un PR.

Este desencadenador es equivalente a un paso de verificación, el archivo no está realmente comprometido con la rama de destino (pre-fusionado con la rama de destino).

Puede comprobar los resultados de la compilación para determinar si el código de la rama fuente es válido.

Por ejemplo:

Si el disparador de Pull Request falla, puede rechazarlo. No afecta la rama de destino, la rama de destino permanece en el estado original

Registro de solicitud de extracción en el archivo YAML

Este podría ser el desencadenante de CI .

Este disparador ocurrirá cuando se complete la solicitud de extracción.

En este caso, la rama de destino ha cambiado. El cambio de la rama de destino activa el disparador de CI. Esto puede verificar si el código es válido.

Resumen del flujo de trabajo:

Crear solicitud de extracción -> Activador de solicitud de extracción (verificación previa a la fusión y de incendio) -> Solicitud de extracción completa -> Activador de CI (Completar la combinación de rama y la segunda verificación).

Por cierto, si desea excluir algunos archivos para que no activen el activador de solicitud de extracción, puede agregar un filtro de ruta.

Por ejemplo:

1 BenW Oct 27 2020 at 00:39

Funcionalmente, las dos construcciones pueden no ser siempre iguales.

Digamos que tiene el siguiente ejemplo. Las letras mayúsculas son confirmaciones y las minúsculas son posibles confirmaciones.

  e e'
 /   \
|  |   D
C  |   B 
 \ |  /
   A

Esto muestra, dos ramas que salen de la confirmación A (rama maestra). Cada rama de características tenía un PR creado para cada uno. Una rama tiene una compilación de e 'commit y la otra rama tiene una compilación de e' commit. Azure DevOps no puede estar seguro de qué RP se fusionará primero.

Una vez que fusiona ambos PR, terminará con una nueva confirmación en el maestro que no se ha creado previamente. Esto se describe aquí

   F
   E \
 / |   D
C  |   B 
 \ |  /
   A

Si desea eliminar la necesidad de su compilación en maestro, puede establecer la caducidad de compilación en Immediately when branch name is updated