#ajax #api #build #jenkins
#ajax #API #сборка #дженкинс
Вопрос:
Я использую Jenkins версии 1.406 и не могу запустить параметризованную (3 строки) сборку с использованием AJAX.
В некоторых документах говорится о «токене», но в панелях конфигурации Дженкина ИЛИ задания такой опции нет.
Я отправляю вызов ajax следующим образом:
var jqxhr = $.post(
"http://servername:8080/job/jab-name/build/api/json",
{ "parameters": [{ "PARAM1": "value1" }, { "PARAM2": "value2" }] },
"json"
)
.success(function () { alert("success"); })
.error(function (xhr, ajaxOptions, thrownError) { alert("Errornxhr.status = [" xhr.status "]n xhr.status: [" xhr.statusText "]najaxOptions = [" ajaxOptions "]"); })
.complete(function () { alert("complete"); });
Параметры указаны правильно (с учетом регистра), и все они установлены, не используются значения по умолчанию.
Кто-нибудь может помочь? Спасибо!
Ответ №1:
Несколько вещей, которые нужно проверить
-
Вы проверили опцию «Запускать сборку удаленно (например, из скриптов)»? Если флажок установлен, появится текстовое поле для ввода вашего токена.
-
Используете ли вы безопасность? Если да, вы должны пройти аутентификацию в Jenkins.
-
Взгляните на https://wiki.jenkins-ci.org/display/JENKINS/Remote access API (Утверждение о том, что вам нужно использовать json для запуска параметризованных сборок, неверно)
Комментарии:
1. Привет; в задании Jenkins, которое я пытаюсь запустить, опция «Запуск сборки» не включена. Нет безопасности ни на уровне Jenkins, ни на уровне сервера (нет запроса на проверку подлинности basic / LDAP / Active Directory). Я действительно пытался, как указано на вики-странице в примере, но это тоже не сработало, поэтому я попробовал с частью «/ api / json» в URL, но это не помогло.
2. Вам нужно проверить «Запуск сборки удаленно», иначе вам не повезло. AFAIK, вам не нужно настраивать токен. затем вызвать server/job/myjob/buildWithParameters? ПАРАМЕТР=Значение или используйте rest API. — для справки смотрите также wiki.jenkins-ci.org/display/JENKINS/Parameterized Build
Ответ №2:
Я думаю, вам нужно заменить build
на buildWithParameters
в вашем URL.
var jqxhr = $.post(
"http://servername:8080/job/jab-name/buildWithParameters/api/json",
{ "parameters": [{ "PARAM1": "value1" }, { "PARAM2": "value2" }] },
"json"
)
.success(function () { alert("success"); })
.error(function (xhr, ajaxOptions, thrownError) { alert("Errornxhr.status = [" xhr.status "]n xhr.status: [" xhr.statusText "]najaxOptions = [" ajaxOptions "]"); })
.complete(function () { alert("complete"); });
Комментарии:
1. Я протестировал сейчас с тем же результатом. Возможно, это проблема с межсайтовым скриптингом, но я не уверен.