Cómo poner en cola el trabajo de Jenkins desde la solicitud de extracción de TFS con la rama fusionada

2 minutos de lectura

Como poner en cola el trabajo de Jenkins desde la
Shayki Abramczyk

Tenemos un repositorio de Git en TFS (2017.3) y nuestras compilaciones se ejecutan en Jenkins.

Queremos implementar en la Solicitud de extracción una validación de compilación, por lo que creamos una definición de compilación que pone en cola un trabajo de Jenkins y en los “Parámetros del trabajo” ingresamos
BRANCH=$(System.PullRequest.SourceBranch):

ingrese la descripción de la imagen aquí

El problema es que en el paso TFS Get Sources, TFS crea una rama fusionada temporalmente para verificar el PR, pero el System.PullRequest.SourceBranch devuelve la rama de origen de PR (por ejemplo, la rama de funciones) y no la rama fusionada, por lo que el trabajo de Jenkins se ejecuta en la rama de origen y no comprueba el PR.

¿Podemos enviar a Jenkins la rama fusionada o debemos hacer la fusión en el trabajo de Jenkins?

ACTUALIZAR:

Veo que la variable Build.SourceBranch devuelve la rama fusionada pero parece que el trabajo de Jenkins no conoce esta rama. Revisé ahora en el agente y el Git está en HEAD separado, por lo que asumo que no hay opción para obtener desde fuera del agente (incluso si el agente se creó en una nueva sucursal: “sucursal fusionada” es solo local). ¿alguna idea?

  • Solo un tiro ciego, ¿podría ser que hay espacios en el nombre de la sucursal? No estoy seguro de cómo la expansión BRANCH=$(...) resulta sin comillas en ese caso.

    – David

    04 feb. 19 en 15:21

  • Hola David, no hay espacios en la rama 🙁

    – Shayki Abramczyk

    04 feb. 19 a las 15:25

Supongo que usa el complemento Jenkins TFS para activar un trabajo de Jenkins.

En ese caso según plugin documentación oficial (sección ‘Git’) necesitas agregar +refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/* a Refspec configuración en el paso Git Checkout.

TFS almacena confirmaciones de combinación de solicitud de extracción en ramas temporales denominadas pull/<PR number>/head. Añadiendo Refspec Permitirá que Jenkins obtenga estos resultados de confirmación de combinación. Funciona para mi.

  • ¡Gracias! ya no usamos el tfs – jenkins en nuestro PR pero suena lo correcto.

    – Shayki Abramczyk

    03 abr.

.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad