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.

Pase un objeto JSON enorme a la construcción de Jenkins.

Estoy construyendo un trabajo de Jenkins a través de la REST API y necesito pasar una carga útil JSON enorme para la compilación – superior a 2MB.

Actualmente, con una carga útil JSON de menos de 2MB y usando Parámetros de entrada de varias líneas, puedo pasar con éxito el JSON al trabajo.

Mi uso actual se ve así:

curl -sg -X POST "http://[xxxx:xxxx:xx:xxxx::a]:9090/job/Planner/buildWithParameters" –user admin:xxxxxxcbd73258xxxxxxxxxxx –data INPUT_LINE=$MY_JSON -H 'Accept: application/json'

Pero cualquier cosa por encima de 2MB, obtengo el siguiente error:

"error=7, Lista de argumentos demasiado larga
en java.base"

Lo cual coincide con getconf ARG_MAX -> 2,097,152 en mi máquina.

Actualmente estoy buscando una solución alternativa. Parece que las variables de entorno tienen un valor máximo que Jenkins está utilizando como parámetros de compilación.

Las soluciones proporcionadas aquí también parecen estar utilizando BuildParameters que terminarán como variables de entorno, por lo tanto, no son adecuadas para la configuración de cargas útiles enormes:
https://stackoverflow.com/questions/51508222/what-is-the-format-of-the-json-for-a-jenkins-rest-buildwithparameters-to-overrid

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en Jenkins, sugeriría utilizar el punto final /build de la API REST de Jenkins en lugar del punto final /buildWithParameters para pasar una gran carga útil JSON a la compilación. Esto se debe a que el punto final /build le permite pasar la carga útil JSON como un archivo en lugar de como parámetros de compilación.

    Aquí hay un ejemplo usando curl:

    curl -X POST "http://[xxxx:xxxx:xx:xxxx::a]:9090/job/Planner/build" \
        --user admin:xxxxxxcbd73258xxxxxxxxxxx \
        --data-binary "@path/to/your/json/payload.json" \
        -H 'Content-Type: application/json' \
        -H 'Jenkins-Crumb:crumb'
    

    En este ejemplo, @path/to/your/json/payload.json se refiere a la ruta del archivo de su carga útil JSON. También debe proporcionar el encabezado Content-Type: application/json para indicar que el cuerpo de la solicitud es JSON. Finalmente, debe proporcionar el encabezado de migas de pan de Jenkins (Jenkins-Crumb:crumb) para autenticar la solicitud.

    Al utilizar este enfoque, puede evitar el límite de tamaño de lista de argumentos impuesto por Jenkins al pasar parámetros de compilación.

Comments are closed.