Назад | Перейти на главную страницу

Настройка веб-перехватчика Github post-receive с частным Jenkins и частным репо

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

Я считаю, что настроил все правильно на стороне Jenkins, потому что при отправке запроса с общедоступного сервера с помощью curl следующим образом:

curl http://username:password@ipaddress:port/github-webhook/

приводит к:

Stacktrace: net.sf.json.JSONException: null object

что нормально, потому что полезная нагрузка JSON отсутствует. Отправка неправильного имени пользователя и пароля в URI приводит к:

Exception: Failed to login as username

Я интерпретирую это как правильную конфигурацию Jenkins. Оба эти запроса также приводят к появлению записей в журнале Jenkins. Однако при вставке того же самого URI, приведенного выше, в репозиторий Github Post-Receive URLs Service Hook и нажатии на Тестовый крючок, похоже, на моем сервере абсолютно ничего не происходит. Ничто в журнале Jenkins и журнале обработчиков GitHub в проекте Jenkins не говорит Опрос еще не проводился.

У меня закончились идеи, и я не знаю, что делать дальше.

Попробуйте использовать Apache в качестве прокси перед Jenkins. Я использую NameVirtualHost ...

<VirtualHost>
  --Snip---    

<Proxy *>
      AddDefaultCharSet Off
      Order deny,allow
      Allow from all
     --snip-- #You can tighten this to only allow from GITHUB ips.
</Proxy>

    RequestHeader unset Authorization
    RequestHeader set Authorization "Basic [AUTHSTRING]"
    ProxyPass / [AJP|HTTP]://[JENKINS]:[PORT]/
    ProxyPassReverse / [AJP|HTTP]://[JENKINS]:[PORT]/

</VirtualHost>

Я запускаю Jenkins в контейнере tomcat и использую AJP, поэтому var [AJP | HTTP] может быть либо для прокси. Переменные [JENKINS] и [PORT] должны быть интуитивно понятными.

А теперь самое сложное, [АВТОСТРУКТУРА]!

Возьмите часть USERNAME: PASSWORD и запустите ее с помощью этой команды:

$ echo -n 'username:password' | base64
 dXNlcm5hbWU6cGFzc3dvcmQ=

(echo -n важно для удаления новой строки.) Возьмите результат и введите [AUTHSTRING]

У вас должна быть возможность удалить user: password из строки на github.