Jenkins Paramerized Trigger + Copy Artifact

9

Estoy trabajando en la configuración de Jenkins para manejar nuestras versiones de lanzamiento. Una compilación de lanzamiento consiste en un instalador de Windows que incluye algunos binarios que deben construirse en Linux.

Esto es lo que tengo hasta ahora:

  • La porción de Windows y la porción de Linux se configuran como proyectos separados de Jenkins.
  • El proyecto de Windows está parametrizado, tomando la etiqueta Subversion para compilar y lanzar.
  • Como parte de su compilación, el proyecto de Windows desencadena una compilación de la misma etiqueta de Subversion para el proyecto de Linux (usando el complemento de disparo parametrizado ) y luego copia los artefactos del proyecto de Linux (usando el complemento Copiar artefacto ) al espacio de trabajo del proyecto de Windows para que se pueden incluir en el instalador de Windows.

Donde estoy atascado: en este momento, Copy Artifact está configurado para copiar la última compilación exitosa. Parece más robusto configurar Copy Artifact para copiar desde la compilación exacta que desencadenó el Activador parametrizado, pero tengo problemas para descubrir cómo hacer que eso funcione. Hay una opción para un parámetro "selector de compilación" que creo que está destinado a ayudar con esto, pero no puedo entender cómo se supone que debe configurarse (y experimentar ciegamente con diferentes posibilidades es algo doloroso cuando la compilación tarda una hora) o dos para encontrar el éxito o el fracaso).

¿Cómo debo configurar esto? ¿Cómo funciona el selector de compilación?

Josh Kelley
fuente

Respuestas:

11

Una vez que haya completado una compilación activada, tendrá una nueva variable env establecida en el número de compilación de esa compilación activada llamada TRIGGERED_BUILD_NUMBER_ <nombre del trabajo>. Puede usar eso para copiar específicamente los artefactos:

  1. La compilación de Windows (llamada " WindowsBuild "), llama a la compilación de Linux (llamada " LinuxBuild ") usando el complemento de disparo parametrizado.

    Tienes esta parte, solo asegúrate de marcar Bloquear hasta que los proyectos activados terminen sus compilaciones y, por supuesto, fallarán la compilación si falla la compilación de Linux.

  2. A continuación, en Copiar artefactos de otro paso del proyecto :

    Nombre del proyecto: LinuxBuild

    Qué compilación: compilación específica

    Número de compilación: $ TRIGGERED_BUILD_NUMBER_LinuxBuild (Todos los nombres de proyectos tienen caracteres no a-zA-Z o 0-9 reemplazados por _; varios caracteres se condensan en un solo _).

Byron Brummer
fuente
¿se debe configurar manualmente la variable de entorno "$ TRIGGERED_BUILD_NUMBER_ <downstreamjob>"? No puedo encontrarlo en ninguna de las variables de entorno aguas arriba o aguas abajo.
Harish
1
Se encontró en el plugin wiki que $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> se establece automáticamente si se marca "Bloquear hasta que los proyectos activados terminen sus compilaciones".
Harish