es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    env = "dev" // entrada del usuario
    def stg_userid = "abc"
    def dev_userid = "xyz"
    uid_var_name = "${env}_userid"
    
    if (uid_var_name in binding.variables) { // comprobar si la variable existe
      print binding.getVariable(uid_var_name) // imprimir el valor de la variable
    }
    

    En esta implementación, la variable env contiene la entrada del usuario, mientras que stg_userid y dev_userid son variables predefinidas cuyos valores deben ser seleccionados en función de env. La variable uid_var_name se construye utilizando la interpolación de cadenas, por lo que contendrá el valor "dev_userid" para env = "dev". Por último, la instrucción if 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étodo binding.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.

Comments are closed.