Я пытаюсь настроить частный проект 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.