Запуск параметризованной сборки задания с использованием удаленного API через ajax

#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:

Несколько вещей, которые нужно проверить

  1. Вы проверили опцию «Запускать сборку удаленно (например, из скриптов)»? Если флажок установлен, появится текстовое поле для ввода вашего токена.

  2. Используете ли вы безопасность? Если да, вы должны пройти аутентификацию в Jenkins.

  3. Взгляните на 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. Я протестировал сейчас с тем же результатом. Возможно, это проблема с межсайтовым скриптингом, но я не уверен.