Obtener el valor de la variable si el nombre de la variable se almacena como una cadena en un script Groovy.
Soy completamente nuevo en Groovy y Jenkins. Tengo algunas variables predefinidas en el script de Groovy (de la tubería de Jenkins) y necesito seleccionar dinámicamente una variable de ellas basándome en la entrada del trabajo/usuario.
El contexto de ejemplo del requisito se proporciona a continuación.
Aquí ‘env’ es mi entrada y en base a eso debería obtener el userid correcto.
env = "dev" //Entrada
def stg_userid = "abc"
def dev_userid = "xyz"
uid_var_name = "${env}_userid"
print "${uid_var_name}" // Devuelve "dev_userid"
Imprime ‘abc’ si ingresamos ‘stg’ para env;
Imprime ‘xyz’ si ingresamos ‘dev’ para env.
Intenté buscar en línea casos de uso de nombre de variable dinámica en Groovy, pero no encontré nada útil.
davy.ai
Para seleccionar dinámicamente una variable basada en la entrada del usuario en un Script Groovy de un pipeline de Jenkins, puedes utilizar la interpolación de cadenas para construir el nombre de la variable y luego usarlo para acceder al valor de la variable. Aquí tienes un ejemplo de implementación para el contexto descrito en la pregunta:
En esta implementación, la variable
env
contiene la entrada del usuario, mientras questg_userid
ydev_userid
son variables predefinidas cuyos valores deben ser seleccionados en función deenv
. La variableuid_var_name
se construye utilizando la interpolación de cadenas, por lo que contendrá el valor"dev_userid"
paraenv = "dev"
. Por último, la instrucciónif
verifica si la variable con el nombre construido existe en el ámbito de variables actual (es decir, enlace), y si es así, utiliza el métodobinding.getVariable()
para recuperar e imprimir su valor.Ten en cuenta que utilizar nombres de variables dinámicos como este puede propensar a errores y puede violar las mejores prácticas para un código mantenible. Se recomienda considerar enfoques alternativos, como utilizar un diccionario para mapear las entradas de los usuarios a variables predefinidas, o refactorizar el código para utilizar un modelo de datos más estructurado.