Прокси-сервер webhook для jenkins во внутренне видимом экземпляре jenkins
Я работаю с экземпляром Jenkins в моей частной сети дома. Этот экземпляр (ежечасно) опрашивает различные репозитории на github на предмет изменений и воздействует на них.
Чтобы снизить нагрузку как на мою сеть, так и на github, я хотел бы реализовать веб-зацепки, но не слишком рад открытию моей установки Jenkins в Интернете или даже нескольким конкретным IP-адресам, с которых я могу ожидать звонки через веб-крючок.,
Есть ли какой-нибудь прокси, который я мог бы установить на жертвенном хосте, который перенаправляет запрос на реальный сервер в моей сети? Вызов параметров санации был бы хорошим дополнением.
1 ответ
У нас есть аналогичная установка, где у нас есть один хост, работающий в Интернете, который получает веб-хуки от наших различных провайдеров git, выполняет некоторую переписывание, если необходимо, а затем перенаправляет хук внутренне Дженкинсу (или где-то еще).
Это делается с помощью очень простой конфигурации nginx:
# Allow *only* the notifyCommit endpoint, and don't expose any other info
location = /git/notifyCommit {
proxy_pass http://jenkins.int.example.com:8080/git/notifyCommit
proxy_hide_header X-Powered-By;
proxy_intercept_errors on;
error_page 500 /;
}
Использование location =
синтаксис означает, что сопоставляется только этот точный URL (плюс параметры запроса). Все остальное выдаст ошибку 404.
В качестве альтернативы вы можете попробовать запустить https://github.com/orrc/git-webhook-proxy на незащищенном хосте; это созданный мной веб-сервер, который будет перехватывать веб-хуки, а затем кэшировать репозитории локально, а затем пересылать веб-хуки через внутреннюю сеть в Jenkins.