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