2012-08-31 17 views
22

Cuando ejecuto un trabajo en Jenkins, a cada construcción se le asigna un nombre que se muestra en la interfaz de usuario en el historial de compilación, que básicamente es la fecha y hora actuales.¿Cómo personalizar el nombre de compilación de Jenkins?

Me gustaría poder poner parámetros de construcción allí para que pueda ver en el historial de construcción qué ramas se han construido y cuándo.

He buscado alrededor de complementos para hacer esto, pero no he podido encontrar ninguno. ¿Hay alguno?

+0

Sobrecarga de la terminología: la fecha y la hora actuales se muestran en el campo "Descripción", no en el "Nombre" que se predetermina a un número creciente. Consulte el plugin [Description Setter] (https://wiki.jenkins-ci.org/display/JENKINS/Description+Setter+Plugin) o la propiedad 'currentBuild.description' de DSL de Pipeline. – MarkHu

Respuesta

20

Suena como el Build Name Setter plugin.

Pero si usted está utilizando Pipeline, se puede hacer algo como esto:

currentBuild.description = "#${BUILD_NUMBER}, branch ${BRANCH}" 
+4

Pero este complemento no puede expresar los parámetros de compilación, o las variables de env de scripts generales que puede establecer. Pero puede leer una variable env de host (por ejemplo, '$ {HOSTNAME}') y un archivo de propiedades desde el espacio de trabajo. Entonces, una solución no tan graciosa es definir, p. un script de shell como paso de compilación y escriba los parámetros 'name = values' en un archivo de propiedades arbitrarias (por ejemplo: echo "MY_PARAM = $ {MY_PARAM}"> params.properties. Lo único es que el plugin de compilador de nombre de compilación evalúa la expresión una vez demasiado pronto, y finalmente solo al final (por lo que la compilación debe finalizar para que pueda ver el resultado) –

+0

¿Alguien ha encontrado una mejor alternativa a esto? El nombre que quiero establecer puede calcularse fácilmente a partir de propiedades existentes (con algunas manipulaciones de cadenas bastante simples), pero no puedo ver ninguna forma de hacerlo fuera de un script de shell que da salida a un archivo de propiedades, que luego se inyecta. El principal inconveniente es que el trabajo puede fallar antes de llegar a la inyección ¡paso! – Constantinos

+1

@Constantinos Actualicé mi respuesta para cubrir usando un trabajo de Pipeline, que hace esto más fácil que en un trabajo de Freestyle. –

17

[respuesta a la observación de Patrice M. arriba, solo que no tiene suficiente reputación para comentar]:

El complemento Build Name Setter puede expresar una variedad de variables, incluidas variables de entorno, cuando se utiliza junto con el Token Macro plugin. Además, los parámetros de compilación también están disponibles como variables de entorno; así, por ejemplo, si su construcción tiene un parámetro "MIPARAM", entonces puede simplemente usarlo (suponiendo que haya instalado el plugin de emergencia macro) en el nombre de la Estructura de esta manera:

Built with parameter MYPARAM: ${ENV, var="MYPARAM"} 
8

También es posible establecer el nombre de la compilación "manualmente", usando Jenkins Groovy plugin. Simplemente siga estos pasos:

  1. Generar un nuevo nombre de compilación. Si va a realizarlo en el paso de trabajo por separado, puede necesitar guardarlo en el archivo de propiedades, por ejemplo, con el nombre "nuevaVersión" y realizar un paso "Inyectar variables de entorno" con Jenkins EnvInject plugin.
  2. El siguiente paso - Sistema de ejecutar un script Groovy:

    def build = Thread.currentThread().executable 
    assert build 
    def newBuildName = build.getEnvironment().get('newVersion') 
    try { 
        if (newBuildName) build.displayName = newBuildName 
        println "Build display name is set to ${newBuildName}" 
    } catch (MissingPropertyException e) {} 
    

Como se puede ver, estamos utilizando una variable build.displayName aquí. Su valor es un nombre de compilación visible en Jenkins.

+3

Very c ool. El único inconveniente como un "usuario" es tener la aceleración de una "aprobación de administrador" en su script de Groovy. Con el complemento * Groovy Postbuild *, la sintaxis es un poco diferente. Ejemplo: 'manager.build.displayName =" # "+ manager.build.number + '' + manager.envVars [" desc_var "];' - y para la descripción: 'manager.build.description =" Groovy Postbuild: "+ manager.build.number" – MarkHu

0

Este complemento "Build name setter plugin" puede que lo ayude. Como fuente de nombre de compilación, puede usar un archivo de texto en un disco o una variable de entorno. También puede combinar el complemento con el complemento EnvInject

0

Advertencia: esto solo funciona en entornos * nix. Para ver los pasos de concha individuales puede ejecutar <comando> en cambio, como:

/usr/bin/env JOB_NAME="Old JOB_NAME: ${JOB_NAME}" <command> 

Asumiendo que su proyecto se llama "miproyecto", <comando> vería la variable de entorno JOB_NAME como "JOB_NAME antigua: miproyecto"

0

Para modifique la visualización predeterminada Nombre use currentBuild.displayName = "#${BUILD_NUMBER}, branch ${BRANCH}"

Cuestiones relacionadas