tutorial scripted scm examples example jenkins groovy jenkins-pipeline

jenkins - scripted - Parámetros de paso de canalización a trabajos posteriores



scripted pipeline (4)

Además de la respuesta de , si quieres pasar un parámetro de cadena, utiliza:

build job: ''your-job-name'', parameters: [ string(name: ''passed_build_number_param'', value: String.valueOf(BUILD_NUMBER)), string(name: ''complex_param'', value: ''prefix-'' + String.valueOf(BUILD_NUMBER)) ]

Estoy usando Jenkins v2.1 con la función integrada de canalización de entrega ( https://jenkins.io/solutions/pipeline/ ) para orquestar dos compilaciones existentes (compilación e implementación).

En mi configuración parametrizada, tengo 3 parámetros de configuración de usuario, que también deben poderse seleccionar en la canalización.

La secuencia de comandos de tubería es la siguiente:

node: { stage ''build'' build job: ''build'', parameters: [[$class: ''StringParameterValue'', name: ''target'', value: target], [$class: ''ListSubversionTagsParameterValue'', name: ''release'', tag: release], [$class: ''BooleanParameterValue'', name: ''update_composer'', value: update_composer]] stage ''deploy'' build job: ''deploy'', parameters: [[$class: ''StringParameterValue'', name: ''target'', value: target]] }

Esto funciona correctamente a excepción de BooleanParameterValue . Cuando construyo la tubería, se produce el siguiente error:

java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class java.lang.String

¿Cómo puedo resolver este error de encasillamiento? O mejor aún, ¿existe una forma menos engorrosa en la que simplemente pueda pasar TODOS los parámetros de la tubería al trabajo posterior?


Asumiendo

value: update_composer

fue el problema, prueba

value: Boolean.valueOf(update_composer)

¿Hay una manera menos engorrosa en la que puedo simplemente pasar TODOS los parámetros de la tubería al trabajo posterior

No es que yo sepa, al menos no sin usar las llamadas API de Jenkins y deshabilitar el entorno limitado de Groovy.


Los parámetros "booleanos" de Jenkins son en realidad solo un atajo para el tipo "parámetro de elección" con las opciones codificadas en las cadenas "verdadero" y "falso", y con una casilla de verificación para establecer la variable de cadena. Pero al final, es solo eso: una variable de cadena, sin nada que ver con un booleano verdadero. Es por eso que necesita convertir la cadena a un valor booleano si no desea hacer una comparación de cadenas como:

if (myBoolean == "true")


como Jesse y dijo que puedes enumerar una cadena en tipo booleano:

Boolean.valueOf(string_variable)

o el booleano opuesto en una cadena:

String.valueOf(boolean_variable)

en mi caso, tuve que bajar el parámetro booleano a otro trabajo. Entonces para esto necesitarás usar la clase BooleanParameterValue :

build job: ''downstream_job_name'', parameters: [ [$class: ''BooleanParameterValue'', name: ''parameter_name'', value: false], ], wait: true