javascript - react - postman
¿Cómo enviar el trabajo de Jenkins a través de REST API? (1)
La siguiente tarea de compilación ''Ejecutar script de Groovy'' actualiza la descripción de la construcción para agregar un botón que enviará otro trabajo de Jenkins parametrizado:
import hudson.model.Cause
import hudson.model.Job
import jenkins.model.Jenkins
final JOB_NAME = ''my-job''
final jenkins = Jenkins.instance
final job = jenkins.getItemByFullName(JOB_NAME, Job.class)
final currentBuild = Thread.currentThread().executable
final buildNumber = currentBuild.getNumber()
job.builds
.findAll { build -> build.number == buildNumber }
.each { build ->
build.setDescription("""
<button
type=''button''
onclick=''javascript:
var another_job = function() {
parameters = {json: {parameter: [{name: "P4_CHANGELIST", value: "0"}]}};
new Ajax.Request("http://builds/job/another-job/build", {
method: "post",
parameters: Object.toJSON(parameters)
});
};
another_job()''>Continue</button>""")
}
Pero al hacer clic en el botón Continuar, la solicitud devuelve una 400 Solicitud incorrecta. Parece que es porque los parámetros de construcción no se pasan correctamente (si elimino los parámetros de compilación de otro trabajo y no envío parámetros, las cosas funcionan bien).
No estoy seguro de si el problema se debe a malas cotizaciones o la forma en que estoy enviando a través de los parámetros de compilación.
Necesitas usar JSON. Consulte Enviar trabajos .
Lo siguiente funcionó para mí:
<button
type=''button''
onclick=''javascript:
var another_job = function() {
new Ajax.Request("http://localhost:8081/job/JReport2/build", {
method: "post",
parameters: {json: Object.toJSON({parameter: [{name: "foo", value: "fobar"}]})}
});
};
another_job()''>
Start Job
</button>
Lo que es un poco extraño es que funciona cuando se presiona el botón que aparece junto a la compilación en la lista de compilación, pero no funciona con el botón que aparece en la descripción de compilación.