Jenkins muestra el nombre del valor del parámetro personalizado

Estoy usando el parámetro de opción extendida para mostrar parámetros de elección usando script groovy jenkins y quiero establecer el parámetro de elección para seleccionar todos los valores de parámetro de elección por defecto. A continuación está el script groovy.

    if(LIST.equals('abc')){
         return ["Select:selected", "abc_test1", "abc_test2", "abc_test3"]
         }
         else if(LIST.equals('xyz')){
         return ["xyz xyz xyz":"ALL_XYZ:selected", "xyz_test1", "xyz_test2", "xyz_test3"]
         }

Tengo el error de abajo -

startup failed:
Script1: 5: Unexpected node type: EXPR found when expecting type: LABELED_ARG at line: 5 column: 48. File: Script1 @ line 5, column 48.
    xyz xyz":"ALL_XYZ:selected", "xyz_test1

Porque estoy combinando MAP con LIST en groovy que no se permite supongo.

Pero cuando uso el siguiente código que pone los valores de MAP en los soportes cuadrados, el nombre del parámetro se muestra como se muestra en la captura de pantalla.

if(LIST.equals('abc')){
     return ["Select:selected", "abc_test1", "abc_test2", "abc_test3"]
     }
     else if(LIST.equals('xyz')){
     return [**["xyz xyz xyz":"ALL_XYZ:selected"]**, "xyz_test1", "xyz_test2", "xyz_test3"]
     }

enter image description here

¿Puedo conseguir ayuda?

Pregunta hecha hace 3 años, 4 meses, 7 días - Por scriptsphinx


2 Respuestas:

  • Por supuesto, el problema que estás experimentando está relacionado con la forma en que estás combinando un mapa y una lista en tu script Groovy. Cuando intentas definir una entrada en un mapa con un nombre compuesto como "xyz xyz xyz", Groovy espera un formato específico para las claves de un mapa.

    Para corregir este problema y lograr el resultado deseado, puedes definir tu estructura de datos de la siguiente manera:

    groovy
    if (LIST.equals('abc')) {
        return ["Select:selected", "abc_test1", "abc_test2", "abc_test3"]
    }
    else if (LIST.equals('xyz')) {
        def map = [:]
        map["xyz xyz xyz"] = "ALL_XYZ:selected"
        map["xyz_test1"] = "xyz_test1"
        map["xyz_test2"] = "xyz_test2"
        map["xyz_test3"] = "xyz_test3"
        return map
    }
    

    En este caso, estamos creando primero un mapa vacío y luego agregando las entradas con la estructura clave-valor requerida en Groovy.

    Con esta corrección, el error que estás experimentando debería solucionarse y deberías poder obtener el resultado deseado al combinar un mapa y una lista en tu script Groovy.

    Respondida el Dec 18, 2020 a las 11:25 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando se debe a que estás intentando combinar un MAP con una LIST en Groovy, lo cual no está permitido. Para resolver este problema, puedes utilizar el operador de propagación (*<strong>) para convertir el MAP en una LIST.

    El código corregido sería:

    groovy
    if(LIST.equals('abc')){
         return ["Select:selected", "abc_test1", "abc_test2", "abc_test3"]
         }
         else if(LIST.equals('xyz')){
         return ["xyz xyz xyz":"ALL_XYZ:selected"] + ["xyz_test1", "xyz_test2", "xyz_test3"]
         }
    

    El operador de propagación (</strong>*) descompone el MAP en una LIST de pares clave-valor, que luego se pueden concatenar con la LIST de valores de cadena.

    Con esta corrección, los valores del parámetro de opción se mostrarán correctamente en Jenkins sin mostrar el nombre del parámetro.

    Respondida el Dec 18, 2020 a las 11:25 - por Gemini

    Votos positivos: 0 | Votos negativos: 0