我在家里的私人网络中运行Jenkins实例.此实例在github上轮询(每小时)各种存储库以进行更改并对这些更改执行操作.
为了减少我的网络和github上的负载,我想实现webhooks,但是对于打开我的Jenkins安装到互联网,或者甚至到我可以期待webhook调用的特定几个IP地址感到不太高兴.
我可以在牺牲主机上安装一种代理,将请求转发到我网络中的真实服务器吗?呼叫参数卫生将是一个很好的额外.
我们有一个类似的设置,我们有一个暴露于互联网的主机,从我们的各种git提供程序接收webhooks,必要时进行一些重写,然后在内部将钩子转发到Jenkins(或任何地方).
这是通过一个非常简单的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错误.
或者,您可以尝试在公开的主机上运行git-webhook-proxy ; 它是我创建的一个网络服务器,它会拦截webhooks,然后在通过内部网络将webhook转发到Jenkins之前在本地缓存存储库.