Передача параметра в jenkins job через curl POST не работает?
Я пытаюсь запустить
curl -X POST -u "user:pass" -H Jenkins-Crumb:thecrumbnumber http://myjenkinsserver/jenkins/job/testjob/buildWithParameters?=PARAMETER=somenumber
который работает, вызывая параметризованную сборку, но проблема в том, что значение не передается в сборку (что странно, даже если в задании установлен токен, я могу запустить задание без него). В jenkins это задание имеет настроенную строку "PARAMETER" с некоторым значением по умолчанию или без него, но никогда не передается параметр из запуска curl. Чего мне не хватает?
9 ответов
Я использую:
curl -X POST -u "user" "http://myjenkins/path/to/my/job/buildWithParameters?GERRIT_REFNAME=feature/retry&goal=package"
здесь, и это работает как шарм.
Следите за "=" перед "ПАРАМЕТРОМ" в вставленном вами URL.
Использование параметров формы curl (-F param1=value1
) решил проблему:
# parameters need to be passed via: -F param1=value1 -F param2=value2 ...
curl -X POST http://myJenkins/job/testjob/buildWithParameters?token=<myToken> -F param1=value1
Я использую сборки Trigger удаленно, и у меня была та же проблема, и ничего из вышеперечисленного не помогло. Когда я передаю параметры через параметры URL
# job is triggered but parameters are not propagated
curl -X POST http://myJenkins/job/testjob/buildWithParameters?token=<myToken>¶m1=value1
задание запускается, но параметры не передаются.
Пожалуйста, попробуйте что-то вроде:
curl -X POST http://<jenkins URL>/jenkins/job/TESTS/job/<Your job's Name>/buildWithParameters \
--user <Jenkins account>:<account's TokenID> \
--data token=<job's token (if required)> \
--data MessageText=Le%20Texte
Я использовал команду ниже, чтобы передать несколько параметров.
curl -X POST "https://myjenkins.com/job/jobname/buildWithParameters?token=developer&name=abc&userid=CFDH123&mail=abc@gmail.com"
Примечание: имена параметров чувствительны к регистру.
Похоже, что на странице Jenkins Confluence есть опечатка при вызове параметров URL-адреса Jenkins, передавая параметры в качестве полезной нагрузки JSON.. https://wiki.jenkins.io/display/JENKINS/Remote+access+API Пробовал использовать суффикс URL-адреса в качестве сборки вместо buildWithParameters и это работает..
curl -X POST -u "user: token / password" "http://myjenkins/path/to/my/job/build --data-urlencode json='{" параметр ": [{"name":"GERRIT_REFNAME", " значение ":" функция / повтор "},{" имя ":" цель "," значение ":" пакет "}]}'
оба приведенных ниже формата работают нормально для меня.
curl -X POST http://hostname:8080/job/first_pipeline/build --user siebelcrm:xxxxxx --data-urlencode json='{"parameter": [{"name":"Greetings", "value": "New123"}]} ' -H "Дженкинс-Крамб:xxxxx"
или же
curl -X POST http://hostname:8080/job/first_pipeline/buildWithParameters?Greetings=New1 --user Admin:xxxxx --data-urlencode json=' ' -H "Jenkins-Crumb:xxxxx"
Когда я пытался
curl -X POST http://icm.git:faedc992afcd1ea4db3da6809435117a@10.221.31.36:8080/job/1_TODO_Get_Submit_Request_With_Dependency_Test/buildWithParameters?PARAMETER=1494390553639
ИЛИ ЖЕ
curl -X POST -u "icm.git:lge123" -H Jenkins-Crumb:faedc992afcd1ea4db3da6809435117a http://10.221.31.36:8080/job/1_TODO_Get_Submit_Request_With_Dependency_Test/buildWithParameters?PARAMETER=1494390553639
Оба запускали задание Jenkins> 1_TODO_Get_Submit_Request_With_Dependency_Test, но параметр в журнале Jenkins показал значение по умолчанию для параметра REQUESTID = -1
,
Что такое проблема с Jenkins или CURL url?
+ echo '4.2.25(1)-release'
4.2.25(1)-release
+ echo
+ echo 26
26
+ echo '#26'
#26
+ echo 1_TODO_Get_Submit_Request_With_Dependency_Test
1_TODO_Get_Submit_Request_With_Dependency_Test
+ echo 1_TODO_Get_Submit_Request_With_Dependency_Test
1_TODO_Get_Submit_Request_With_Dependency_Test
+ echo REQUESTID = -1
REQUESTID = -1
Я обнаружил, что это очень сбивает с толку и непоследовательно, особенно когда я хочу передать параметры в теле. Ниже приводится то, что я считаю лучшим подходом для построения с параметрами (передача некоторых параметров и использование указанных значений по умолчанию).
curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/buildWithParameters \
-F PARAMETER=somenumber
Я также пробовал следующие подходы и упоминал их, потому что они появляются в различной документации, но не работают должным образом / как описано.
Ниже представлена сборка (сборка vs buildWithParameters URL) и передача параметров, НО не используются другие параметры по умолчанию.
curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/build \
--data-urlencode json='{"parameter": [{"name":"PARAMETER", "value":"somenumber"}]}'
Кажется, что ниже должно работать, но я обнаружил, что параметр был передан неправильно.
curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/build \
--data-urlencode json='{"parameter": [{"name":"PARAMETER", "value":"somenumber"}]}'
Я также пытаюсь опубликовать следующую команду curl, но она не публикуется.
curl -X POST -v https://JENKINS_SERVER/job/JOBNAME/buildWithParameters --user foo:8382 --data-urlencode json='{"parameter": [{"name": "registration_action","value": "DNS_only"},{"name": "entries","value": "add, hostname01.local.example.com, 192.168.1.1/24\nremove, hostname01.local.example.com, 192.168.1.1/24/\n" }]}'
Он создает задание, но не передает переменные. Не уверен, что делаю неправильно.