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/ enter image description here


и ОЧЕНЬ ВАЖНО, так как вы устанавливаете свой сервер 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.

действия :

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

  2. перейдите в репозиторий, который вы хотите крюк с Дженкинсом

  3. нажмите на вкладку Настройки - > webhooks & services
  4. нажмите на Добавить Webhook.
  5. введите URL полезной нагрузки: как : http://:8080/github-webhook/
  6. выберите тип контента как json.
  7. вы сделали.

теперь вы делаете изменения и фиксацию, вы увидите, что Jenkins build get trigger автоматически. Не забудьте выполнить настройки в заданиях jenkins, чтобы начать сборку при нажатии кода в github.


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

Я хотел включить фотографию здесь, но мой id не имеет права делать это.