Um diese Frage zu ergänzen, habe ich herausgefunden, dass Sie den /buildWithParameters
Endpunkt nicht verwenden müssen .
In meinem Szenario habe ich ein Skript, das Jenkins dazu veranlasst, nach einer Bereitstellung Tests auszuführen. Für einige dieser Tests sind zusätzliche Informationen zur Bereitstellung erforderlich, damit sie ordnungsgemäß funktionieren.
Wenn ich versuchen würde, /buildWithParameters
einen Job zu verwenden, der keine Parameter erwartet, wird der Job nicht ausgeführt. Ich möchte nicht jeden Job bearbeiten, um gefälschte Parameter zu benötigen, damit die Jobs ausgeführt werden.
Stattdessen habe ich festgestellt, dass Sie Parameter wie folgt übergeben können:
curl -X POST --data-urlencode "token=${TOKEN}" --data-urlencode json='{"parameter": [{"name": "myParam", "value": "TEST"}]}' https://jenkins.corp/job/$JENKINS_JOB/build
Damit json=...
wird der Parameter myParam
mit dem Wert TEST
bei jedem Aufruf an den Job übergeben. Der Jenkins-Job wird jedoch auch dann ausgeführt, wenn der Parameter nicht erwartet wird myParam
.
Das einzige Szenario, das hier nicht behandelt wird, ist, wenn der Job einen Parameter hat, der NICHT in der übergeben wird json
. Selbst wenn für den Parameter ein Standardwert festgelegt ist, kann der Job nicht ausgeführt werden. In diesem Szenario wird beim Aufruf die folgende Fehlermeldung / Stapelverfolgung angezeigt /build
:
java.lang.IllegalArgumentException: No such parameter definition: myParam
Mir ist klar, dass diese Antwort einige Jahre zu spät ist, aber ich hoffe, dass dies nützliche Informationen für jemand anderen sind!
Hinweis: Ich verwende Jenkins v2.163