Как настроить Cloudbees Jenkins для запуска сборки при отправке на Github

Я пытался следовать инструкциям в этой статье:

http://developer.cloudbees.com/bin/view/DEV/GitHub+Commit+Hooks+HOWTO

Но у меня есть две проблемы:

  1. Это не работает. Когда я нажимаю на github, на стороне Дженкинса ничего не происходит. На Jenkins в журнале GitHub Hook написано: «Опрос еще не запущен».

  2. Возможная причина этого заключается в том, что я не могу указать репозиторий git, как показано на этом изображении:

введите здесь описание изображения

Нет текстового поля для открытого ключа и других полей. Вместо этого у меня есть поля

Repository URL, Name, Refspec

Также я могу указать URL-адрес http (и работает все, кроме запуска). Но если я укажу URL-адрес git/ssh, как на изображении, я получаю следующую ошибку:

Не удалось подключиться к репозиторию: команда «git ls-remote -h [email protected]:schauder/degraph.git HEAD» вернула код состояния 128: stdout: stderr: Предупреждение: постоянно добавлено «github.com, 207.97.227.239» ( RSA) в список известных хостов. Отказано в доступе (publickey). фатальный: Не удалось прочитать из удаленного репозитория.

Пожалуйста, убедитесь, что у вас есть правильные права доступа и репозиторий существует.

Я скопировал URL-адрес с github, поэтому опечатка маловероятна.

Я убедился, что у меня установлен плагин github (обновлен до версии 1.5)

Любые подсказки, как исправить или хотя бы отладить проблему?

Обновление ответов на вопросы в комментариях:

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

И да, я устанавливаю веб-хук в GitHub. Когда я нажимаю там кнопку проверки, ничего не происходит. Когда я помещаю URL-адрес веб-хука в свой браузер, я получаю http 500, говорящий

Не предназначен для интерактивного просмотра (необходимо указать параметр полезной нагрузки)

Плюс длинная трассировка стека.

Еще одно обновление

Я проверил плагины, связанные с GIT, установленные на стороне Jenkins. Все, что показывает их с GIT в тексте, установлено и имеет самую последнюю версию.


person Jens Schauder    schedule 15.03.2013    source источник
comment
Просто для проверки: 1) Вы установили флажок «Сборка», когда изменение передается в GitHub в разделе «BuildTrigger» в вашей работе Jenkins? 2) Зарегистрировали ли вы сервисный хук в разделе «Настройки | Сервисные крючки | URL-адреса WebHook в вашем проекте GitHub?   -  person Benjamin Muschko    schedule 15.03.2013
comment
Да, я сделал это. Смотрите обновление вопроса.   -  person Jens Schauder    schedule 15.03.2013
comment
Основываясь на приведенном выше сообщении об ошибке Git, я предполагаю, что вы не можете пройти аутентификацию. Вы добавили открытый SSH-ключ CloudBees на GitHub, как описано в здесь?   -  person Benjamin Muschko    schedule 15.03.2013
comment
Хорошо, я думаю, что нашел открытый ключ (в Jenkins) и поместил его в Github. Теперь я могу указать URL-адрес SSH для репозитория github. Но срабатывания по-прежнему не происходит.   -  person Jens Schauder    schedule 15.03.2013
comment
На самом деле запуск работает после настройки ключа. Не знаю, почему мой первый тест провалился.   -  person Jens Schauder    schedule 15.03.2013


Ответы (2)


Основываясь на приведенном выше сообщении об ошибке Git, я предполагаю, что вы не можете пройти аутентификацию. Вы добавили открытый SSH-ключ CloudBees на GitHub, как описано в здесь?

Разъяснение OP

Изображение, указанное в вопросе, похоже, предполагает, что открытый ключ из GitHub помещается в CloudBees. Но на самом деле все наоборот, а также все метки как будто изменены, поэтому довольно сложно сопоставить этот скриншот с тем, что вы видите в CloudBees.

Итак, что я сделал, это:

  • в конфигурации Job в Cloudbees есть открытый ключ (сгенерированный CloudBee). Я его в разделе CloudBees DEV@cloud Authorization и пометил CloudBees Public Key. Скопируйте этот ключ.

  • Перейдите на GitHub и перейдите к Settings > Deploy Keys. Добавьте туда ключ.

  • перейти к Settings > Service Hooks > WebHook URLs. Нажмите на кнопку тестирования. Вы не увидите многого на стороне GitHub.

  • Вернитесь к CloudBees Jenkins. С главной страницы задания перейдите в «GitHub Hook Log». Там вы должны увидеть что-то вроде:

    Started on Mar 15, 2013 8:55:14 AM
    Using strategy: Default
    [poll] Last Built Revision: Revision 581acde89a62317fd8dabaa3f4c6025d1c9dd413     (origin/master)
    Fetching changes from the remote Git repositories
    Polling for changes in
    Done. Took 0.34 sec
    Changes found
    

    И ваша работа должна начаться.

    Если в последней строке указано No Changes, это означает, что хук сработал, но вы уже собрали текущую версию, поэтому сборка не запускается снова.

  • Если у вас все еще есть проблемы, посмотрите на https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin#GitHubPlugin-TriggerabuildwhenachangeispushedtoGitHub в разделе «Устранение неполадок» рассказывается, как настроить ведение журнала на стороне jenkins. При этом я получаю всевозможные вещи в Jenkins SystemLog.

person Benjamin Muschko    schedule 15.03.2013

Я только что опубликовал руководство по непрерывной интеграции приложений Play, размещенных на GitHub, с использованием CloudBees. Это предназначено для предоставления всеобъемлющего руководства:

http://ics-software-engineering.github.io/play-example-continuous-integration/

person Philip Johnson    schedule 08.07.2013