Jenkins-Build, когда изменение переносится на вариант GitHub, не работает
Дженкинс работает на локальном хосте.
У меня есть мой репозиторий в GitHub. У меня есть опция "Создать, когда изменения будут перенесены на GitHub".
Когда я нажимаю "Build Now", сборка выполняется успешно, никаких проблем нет. Но когда я делаю код в моем репозитории, автосоздания не происходит. Я могу получить доступ к GitHub из своей системы, поскольку хранилище является общедоступным, и я считаю, что даже Дженкинс должен его обнаружить. Я знаю, что есть опция опроса, но я хочу, чтобы Дженкинс строил, когда изменения обнаружены в репозитории (как этого мы и пытались достичь).
Конфигурация:
Дженкинс 1.615
Git Плагин 2.3.5
Git Клиентский плагин 1.17.1
--------------------------------------------р >
РЕДАКТИРОВАТЬ: "Построить, когда изменение перенесено на GitHub" было переименовано в "Триггер запуска GitHub для опроса GITScm" в последней версии плагина GitHub.
(благодаря обратной связи @smrubin.)
Ответы
Ответ 1
Я подозреваю, что вы пропустили webhook url
.
Помимо проверки опции Build when a change is pushed to GitHub
, вы также должны добавить URL-адрес webhook в репозиторий Github, чтобы получить механизм Автоматический триггер, и вот как это сделать:
Перейдите в репозиторий Github:
Настройки → Webhooks & Services → Сервис → Добавить сервисы → Выберите "Jenkins (GitHub plugin)"
Затем введите Jenkins hook url
своим URL-адресом jenkins следующим образом:
http://your_jenkins_url/github-webhook/
![введите описание изображения здесь]()
И, ОЧЕНЬ ВАЖНО, так как вы устанавливаете свой сервер jenkins в своем локальном хосте, помните, что вы не должны заполнять выше Jenkins hook url like http://localhost:8080/github-webhook/
потому что Github не может распознать localhost
или 127.0.0.1
или 192.168.*.*
.
Либо вы должны использовать внешнее имя DNS или IP-адрес, который может быть распознан Github.
Ответ 2
У меня была такая же проблема, и я решил ее. Проблема заключалась в том, что URL должен заканчиваться /
. Значение:
http://<jenkinsurl>:8080/github-webhook/
✅
http://<jenkinsurl>:8080/github-webhook
❌
(Обратите внимание на отсутствующий /
в конце.)
Ответ 3
На самом деле, если вы выполняете настройки webhook из Jenkins -> Github plugin configuration
(упомянутый выше), вы все равно увидите создание webhooks в github. Таким образом, выше двух подходов в основном делается то же самое.
Мне лично нравится создавать webhook от Github, потому что вам не нужно делиться или хранить информацию о пользователе github в jenkins.
Шаги:
-
Вход в Github (с администратором)
-
Перейдите в репозиторий, который вы хотите подключить с помощью jenkins
- Перейдите на вкладку настроек → веб-камеры и службы
- Нажмите "Добавить веб-хостинг".
- Введите URL-адрес полезной нагрузки: например: http://: 8080/github-webhook/
- Выберите тип содержимого как json.
- все готово.
Теперь вы делаете изменения и совершаете, вы увидите, что сборка jenkins автоматически запускается. Не забудьте сделать настройки в заданиях jenkins, чтобы начать сборку, когда код push в github.
Ответ 4
Плагин GitHub (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin) упомянул два способа: ручной режим и автоматический режим. mainframer дает ответ на ручной режим. Сегодня я нашел что-то новое. mainframer add to the service не позволяет добавить несколько экземпляров Jenkins, поэтому я добавляю других, добавляя Webhook, как показано ниже. Он также отлично работает.
Я хотел включить изображение здесь, но мой идентификатор не имеет на это права.