build jenkins promotions

build - ¿Cómo promocionar un número de construcción específico de otro trabajo en Jenkins?



promotions (1)

Instalé el Promoted Build Plugin de Jenkins y ahora estoy enfrentando algunos problemas para promover una compilación a partir de un trabajo existente. Aquí está el escenario:

  1. Existe un trabajo de Nightly Build que se ejecuta todas las noches y ejecuta todas las pruebas y métricas necesarias;

  2. Existe una Deploy Build que acepta un parámetro $ {BUILD_NUMBER} y despliega la compilación que tiene el correspondiente $ {BUILD_NUMBER} de Nightly Build

    • Digamos que [Nightly Build] ejecutó y construyó con éxito el artefacto # 39
    • Ahora puedo ejecutar [Deploy Build] pasando el # 39 como parámetro
      • Los artefactos de [Nightly Build] # 39 se implementarán

Hasta aquí todo bien. Ahora es la parte donde quiero agregar Build Promotions ...

¿Hay alguna manera de promocionar la Nightly Build #39 ( nótese que ya se había construido antes ) desde Deploy Build ? O tal vez incluso de otro lado, francamente estoy perdido aquí :(

No los veo con una relación clara de Upstream / Downstream, porque no tienen una: siempre ejecuta esta compilación y luego la otra durante la ejecución: [Deploy Build] se ejecuta a veces solo y no siempre después de [Nightly Build] .


Actualización a partir de la versión 2.23 del Plugin de Trigger parametrizado:

Con el comportamiento de la versión 2.23+ cambiado (gracias a AbhijeetKamble por señalar). Cualquier parámetro que esté siendo pasado por la sección Parámetros predefinidos del trabajo de llamada ( compilación ) debe existir en el trabajo llamado ( implementar ). Además, se aplican las restricciones de los parámetros del trabajo llamado, por lo que si el parámetro del trabajo llamado es una opción , debe tener todos los valores posibles (de las promociones) previamente rellenos. O simplemente use el tipo de parámetro Texto .

Solución

Sí, tengo la misma configuración exacta: un trabajo de compilación (basado en compromisos SVN) y un trabajo de implementación ejecutado manualmente. Cuando el usuario selecciona cualquier compilación del trabajo de compilación (incluidas compilaciones antiguas), puede ir al enlace Estado de la promoción y ejecutar varias promociones de implementación , por ejemplo, Implementar a DEV , Implementar a QA , etc.

A continuación, se explica cómo configurar la promoción en el trabajo de compilación :

  • Necesitará estos complementos: Complemento de activación parametrizado , Complemento de construcciones promocionadas
  • También deberá configurar la acción de creación posterior a la creación de Archivar artefactos en este trabajo de compilación.
  • Marca de verificación Promover construcciones cuando
  • Definir el nombre "Implementar a DEV"
  • Debajo de Criteria , marca de verificación Solo cuando se aprueba manualmente
  • En Acciones, use Trigger / call builds en otros proyectos
  • En Proyectos para construir, ingrese el nombre de su trabajo de implementación aquí
  • Marca de verificación Bloquear hasta que los proyectos activados finalicen sus compilaciones
  • Marque esta compilación como una falla si la compilación activada es peor o igual a : FALLO (ajuste según los estados de su trabajo de implementación)
  • Parámetros predefinidos (Código A)

Código A:

Server=IP_of_my_dev_server` Job=$PROMOTED_JOB_NAME` BuildSelection=<SpecificBuildSelector><buildNumber>$PROMOTED_NUMBER</buildNumber></SpecificBuildSelector>

Arriba, en la sección de Parámetros Predefinidos , el nombre a la izquierda de = son los parámetros que están definidos en su trabajo de implementación . Y a la derecha de = son los valores que se asignarán a esos parámetros cuando se ejecute esta promoción. Define tres parámetros Server , Job y BuildSelection .

El parámetro Server= es mío, ya que mi trabajo de implementación puede implementarse en varios servidores. Sin embargo, si su tarea de implementación está codificada para implementarla siempre en una ubicación específica, no la necesitará.

El parámetro Job= es obligatorio, pero el nombre del parámetro depende de lo que haya configurado en su tarea de implementación (explicaré la configuración allí). El valor $PROMOTED_JOB_NAME debe permanecer como está. Esta es una variable de entorno que el proceso de promoción conoce y remite al nombre de su trabajo de creación (aquel en el que se configura el proceso de promoción)

El parámetro BuildSelection= es obligatorio. Toda esta línea debe permanecer tal como está. El valor aprobado es $PROMOTED_NUMBER , que una vez más la promoción conoce. En tu ejemplo, sería #39 .

El bloque hasta que los proyectos activados finalicen su marca de verificación de compilaciones hará que el proceso de promoción espere hasta que finalice el trabajo de implementación . De lo contrario, el proceso de promoción activará el trabajo de implementación y lo abandonará con éxito. Esperar a que finalice el trabajo de implementación tiene la ventaja de que si el trabajo de implementación falla, la estrella de promoción también se marcará con un error.

(Una pequeña nota aquí: la estrella de promoción aparecerá con éxito mientras se está ejecutando el trabajo de implementación . Si hay una falla en el despliegue, solo cambiará a falla después de que finalice el trabajo de implementación . Lógico ... pero puede ser un poco confuso si mira la estrella de promoción antes de completar el despliegue)

Aquí es cómo configurar el trabajo de implementación

  • Necesitarás el plugin Copy Artifacts
  • En esta construcción está parametrizado
  • Configure un parámetro de tipo Elección (o Texto) con el nombre Server (este nombre debe coincidir con la configuración en los Parámetros Predefinidos de promoción en la sección anterior)
  • Opciones: ingrese la lista de IP de servidor posibles que usarían los Parámetros predefinidos de la promoción en la sección anterior ( consulte la nota de actualización a continuación )
  • Configure un parámetro de tipo Elección (o Texto) con el nombre Job (este nombre debe coincidir con la configuración en los Parámetros Predefinidos de promoción en la sección anterior)
  • Opciones: ingrese el nombre de su trabajo de compilación de manera predeterminada. Esto solo es necesario si activa el trabajo de implementación manualmente. Cuando el trabajo de implementación se activa desde la promoción, la promoción proporcionará el valor (el Job= de los parámetros Predefinidos que configuramos). Además, si no se pasa ningún valor de los parámetros Predefinidos de la promoción, se usará el valor de la primera opción. Si tiene una relación de 1 a 1 entre la compilación y la implementación de trabajos, puede omitir el parámetro Job= en la configuración de la promoción.
  • Actualización: desde la versión 2.23 del Activador parametrizado , las opciones disponibles en la configuración del trabajo de despliegue deben tener todos los valores posibles provenientes de los parámetros predefinidos de la promoción. Si no quiere ese límite, use "Texto" en lugar de "Opción"
  • Configure un parámetro de tipo Selector de compilación para Copiar artefacto con nombre : BuildSelection
  • Selector predeterminado : última versión exitosa
  • En los pasos de compilación
  • Configurar Copiar artefactos de otro proyecto
  • En Nombre del proyecto, ingrese ${Job}
  • En qué compilación elegir Specified by a build parameter
  • En nombre del parámetro ingrese BuildSelection (sin ${...} !)
  • Configure el resto según sus artefactos que se copiarán del trabajo de compilación para implementar el espacio de trabajo del trabajo
  • Use los artefactos copiados dentro del trabajo de implementación como necesite para desplegar

Así que ahora, con el trabajo de implementación anterior, puede ejecutarlo manualmente y seleccionar qué número de compilación de la tarea de compilación desea implementar (última compilación, última exitosa, por número de compilación, etc.). Probablemente ya lo haya configurado de manera muy similar. La promoción en el trabajo de compilación ejecutará básicamente lo mismo y proporcionará el número de compilación, en función de qué promoción se ejecutó.

Avíseme si tiene algún problema con las instrucciones.