内部可见的jenkins实例中的jenkins webhook代理

Hak*_*kan 10 proxy github webhooks jenkins transifex

我在家里的私人网络中运行Jenkins实例.此实例在github上轮询(每小时)各种存储库以进行更改并对这些更改执行操作.

为了减少我的网络和github上的负载,我想实现webhooks,但是对于打开我的Jenkins安装到互联网,或者甚至到我可以期待webhook调用的特定几个IP地址感到不太高兴.

我可以在牺牲主机上安装一种代理,将请求转发到我网络中的真实服务器吗?呼叫参数卫生将是一个很好的额外.

Chr*_*Orr 15

我们有一个类似的设置,我们有一个暴露于互联网的主机,从我们的各种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 /;
}
Run Code Online (Sandbox Code Playgroud)

location =语法的使用意味着只匹配那个确切的URL(加上查询参数).其他一切都会引发404错误.


或者,您可以尝试在公开的主机上运行git-webhook-proxy ; 它是我创建的一个网络服务器,它会拦截webhooks,然后在通过内部网络将webhook转发到Jenkins之前在本地缓存存储库.