2011-08-08 10 views
12

Estamos utilizando Jenkins para automatizar varios de nuestros procesos de compilación y prueba. Para algunos de nuestros procesos, el ingeniero que comienza la construcción necesita especificar un parámetro. Pero el rango de valores posibles y óptimos para ese parámetro cambia a lo largo del día.En una compilación de un trabajo de Jenkins, ¿es posible cambiar los parámetros de construcción a mitad de camino?

Lo que me gustaría hacer es dejar que el ingeniero especifique un valor, si conocen un valor óptimo, o dejarlo en blanco y tener un valor calculado mediante un primer paso de compilación. Si se calcula el valor, me gustaría que el paso de compilación de cálculo actualice el valor del parámetro del trabajo. De esta forma, todos los pasos posteriores de compilación no tienen que preocuparse por usar el parámetro o calcularlo, solo usan el parámetro independientemente.

Parece que la Groovy Script Plugin podría ser capaz de hacer esto, pero no puedo ver cómo puede configurar los parámetros de construcción, no acaba de llegar.

Respuesta

7

encontrado la respuesta: utilizar el EnvInject Plugin. Una de las características es un paso de compilación que le permite "inyectar" parámetros en el trabajo de compilación desde un archivo de configuración. Usé un paso de compilación para crear el archivo de configuración, luego otro paso de compilación para inyectar los nuevos valores. Luego, todos los pasos de compilación posteriores y las operaciones posteriores a la compilación usaron el nuevo valor.

3

Jenkins tiene la capacidad de parametrizar compilaciones. Para un string parámetro, el desarrollador puede dejar el campo en blanco y luego sus scripts de compilación pueden verificar si el env. variable para el parámetro se establece. Si el env. var. no está configurado, el script puede realizar cualquier cálculo que se necesite (no creo que Jenkins tenga "pasos previos a la construcción") y transmitirlo. Para un parámetro de elección la primera línea puede ser algo así como (Default), y de nuevo el script de construcción puede probar su valor y actuar en consecuencia.

Nota sobre (Default)

Traté de salir de la primera línea del cuadro de selección en blanco, y Jenkins guardado correctamente la primera vez; pero cuando volví para reconfigurar la compilación, Jenkins ejecutó algunas opciones de recorte y se eliminó la línea en blanco, así que me decidí por (Default).

espero que esto ayude,
Zachary

+2

Este enfoque funciona muy bien cuando tengo un solo paso de generación. Pero tengo muchos pasos de compilación que hacen referencia al parámetro de compilación de diferentes maneras. Condicionalizo los basados ​​en script (como Windows BAT File o PowerScript) pero no puedo condicionalizar otros, como Copy Artifacts o Trigger Build. Buena idea sin embargo. –

0

Esta es mi solución que debería trabajar con tuberías Jenkins:

# Jenkinsfile 
// define job parameters 
properties([parameters([string(defaultValue: 'Hello', description: 'How should I greet the world?', name: 'Greeting')])]) 
// update or replace parameter 
void setParam(String paramName, String paramValue) { 
    List<ParameterValue> newParams = new ArrayList<>() 
    newParams.add(new StringParameterValue(paramName, paramValue)) 
    $build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))  
} 

print params.Greeting 
setParam("Greeting", "bonjour") 
print params.Greeting 
Cuestiones relacionadas