Wie reiche ich einen Jenkins-Job über die REST-API ein?

Der folgende Build-Task 'System-Groovy-Skript ausführen' aktualisiert die Build-Beschreibung, um eine Schaltfläche hinzuzufügen, die einen weiteren Jenkins-Job sendet, der parametrisiert ist:

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>""")
    }

Wenn Sie jedoch auf die Schaltfläche Weiter klicken, gibt die Anforderung eine 400-Fehleranforderung zurück. Es sieht so aus, als ob es daran liegt, dass die Build-Parameter nicht korrekt übergeben werden (wenn ich die Build-Parameter aus einem anderen Job entferne und keine Durchgangsparameter sende, funktionieren die Dinge einwandfrei).

Ich bin nicht sicher, ob das Problem auf ein falsches Zitat oder auf die Art und Weise zurückzuführen ist, wie ich die Build-Parameter sende.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage