Jenkins-Build, когда изменение отправлено в GitHub, опция не работает

Дженкинс работает на локальном хосте. У меня есть репозиторий на GitHub. У меня есть опция «Создавать, когда изменение отправляется на GitHub».

Когда я нажимаю «Build Now», сборка выполняется успешно, никаких проблем. Но когда я фиксирую код в своем репозитории, автосборка не происходит. Я могу получить доступ к GitHub из своей системы, поскольку репозиторий является общедоступным, и я считаю, что даже Дженкинс сможет его обнаружить. Я знаю, что есть вариант опроса, но я хочу, чтобы Jenkins создавал при обнаружении изменений в репозитории (поскольку это то, чего мы пытались достичь).

Конфигурация:

Дженкинс 1.615

Подключаемый модуль Git 2.3.5

Подключаемый модуль Git Client 1.17.1

————————————————————————————————————————————

РЕДАКТИРОВАТЬ: параметр «Сборка при отправке изменения в GitHub» в последней версии переименован в «триггер ловушки GitHub для опроса GITScm». плагина GitHub. (спасибо за отзыв @ smrubin.)


person Anuj Balan    schedule 01.06.2015    source источник
comment
Как это решается с голубым океаном?   -  person technocrat    schedule 06.10.2017


Ответы (4)


Я подозреваю, что вы пропустили webhook url.

Помимо проверки параметра Build when a change is pushed to GitHub, вы также должны добавить URL-адрес веб-перехватчика в свой репозиторий Github, чтобы механизм автоматического запуска работал. Вот как это сделать:

Перейдите в свой репозиторий Github:

Настройки -> Веб-перехватчики и службы -> Служба -> Добавить службы -> Выберите «Jenkins (плагин GitHub)».

Затем заполните Jenkins hook url URL-адресом вашего jenkins следующим образом: http://your_jenkins_url/github-webhook/ введите  здесь описание изображения


И, ОЧЕНЬ ВАЖНО, поскольку вы устанавливаете сервер jenkins на своем локальном хосте, имейте в виду, что вы не должны указывать URL-адрес крючка Jenkins, например http://localhost:8080/github-webhook/, потому что Github не способен распознать localhost, 127.0.0.1 или 192.168.*.*.

Следует использовать либо DNS-имя, доступное извне, либо IP-адрес, который может распознать Github.

person mainframer    schedule 01.06.2015
comment
Этот ответ стал лучом надежды :) Я понимаю, что мне нужно перейти на GitHub и добавить услугу, указав URL-адрес ловушки Jenkins. Я не понимаю, что это за ‹github-webhook›? Как мне получить это / настроить то же самое? - person Anuj Balan; 01.06.2015
comment
В GitHub WebHook (Jenkins Global Config) я нашел этот «localhost: 8080 / github-webhook». и я считаю, что это то, о чем вы имели в виду. Мне нужно выяснить, как удалить этот локальный хост - person Anuj Balan; 01.06.2015
comment
@AnujBalan: удалось ли вам удалить localhost? - person inquisitive; 03.09.2015
comment
Сэкономил время :) Отлично - person Kapil Yadav; 04.07.2016
comment
как ты это исправил? Где ты взял публичный ip от Дженкинса? - person Perazim; 26.08.2016
comment
В моем случае он начал работать после установки плагина ParameterizeRemoteBuild (опция Trigger Build удаленно) в разделе сборки. - person Lovey; 09.11.2016
comment
К вашему сведению, в последней версии плагина GitHub эта опция была переименована в GitHub hook trigger для опроса GITScm wiki.jenkins-ci.org/display/JENKINS/Github+Plugin - person smrubin; 22.01.2017
comment
Могу ли я сделать это, добавив ssh-ключ машины Jenkins в github? - person Harsha Biyani; 09.08.2017

У меня была такая же проблема, и я ее решил. Проблема заключалась в том, что URL-адрес должен заканчиваться на /. Имея в виду:

http://<jenkinsurl>:8080/github-webhook/

http://<jenkinsurl>:8080/github-webhook

(Обратите внимание на отсутствующий / в конце.)

person AskYous    schedule 07.03.2016
comment
Вау, исправил и для меня ... думал, что схожу с ума - person David Calhoun; 23.11.2016
comment
Шутки в сторону. Спасибо! - person entire; 15.03.2017
comment
Это должно быть отмечено где-то красным. - person Konaras; 12.01.2018

На самом деле, если вы выполните настройки веб-перехватчика из Jenkins -> Github plugin configuration (упомянутого выше), вы все равно увидите, что веб-перехватчики создаются в github. Итак, два вышеупомянутых подхода в основном делают одно и то же.

Мне лично нравится создавать веб-перехватчики из Github, потому что таким образом вам не нужно делиться или хранить информацию о пользователях github в jenkins.

Шаги:

  1. Войдите в Github (с администратором)

  2. Перейдите в репозиторий, который хотите зацепить с помощью jenkins

  3. Перейдите на вкладку настроек -> веб-перехватчики и службы.
  4. Щелкните Добавить веб-перехватчик.
  5. Введите URL-адрес полезной нагрузки: например: http: //: 8080 / github-webhook /
  6. Выберите тип содержимого как json.
  7. вы сделали.

Теперь, когда вы вносите изменения и фиксируете, вы увидите, что сборка jenkins запускается автоматически. Не забудьте сделать настройки в заданиях jenkins, чтобы запускать сборку при отправке кода в github.

person suprakash    schedule 17.12.2015

Плагин GitHub (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin) упомянуты два способа: ручной режим и автоматический режим. мейнфреймер дает ответ ручному режиму. Сегодня нашел что-то новенькое. Добавление мэйнфреймера к службе не позволяет мне добавить несколько экземпляров Jenkins, поэтому я добавляю остальные, добавляя Webhook, как показано ниже. Тоже нормально работает.

Я хотел добавить сюда картинку, но мой идентификатор не имеет на это права.

person Jirong Hu    schedule 25.11.2015