如何在设置 jenkins 触发器时在 github webhook 中修复“我们无法传递此有效负载:无法连接到服务器”?

Posted

技术标签:

【中文标题】如何在设置 jenkins 触发器时在 github webhook 中修复“我们无法传递此有效负载:无法连接到服务器”?【英文标题】:How to fix "We couldn’t deliver this payload: Couldn't connect to server" in github webhook while setting up a jenkins trigger? 【发布时间】:2020-01-05 01:42:26 【问题描述】:

我正在 GitHub 中设置一个 Web-hook 来为每个推送事件触发 Jenkins 构建。我正在从 Blue Ocean Docker 容器运行 Jenkins。

https://imgur.com/bNf5dMd

我可以从 http://192.168.99.101:32771/ 访问 jenkins,正如 docker 容器中所指定的那样。 我已经指定了 git 存储库并选中了“GitHub hook trigger for GITScm polling”复选框。

我可以在提交后手动启动构建过程,但是当我在 github 中使用有效负载 url http://192.168.99.101:32771/github-webhook/ 设置 webhook 并提交一些东西时, 我收到错误消息“我们无法传递此有效负载:无法连接到服务器”

我看过的其他解决方案。

    使用 ngrok。但我没有在 localhost 上运行它。 我尝试使用个人访问令牌并创建了一个从 Jenkins 到 Github 的自动 webhook。我也遇到了同样的错误。

我错过了什么,或者我做错了什么?

【问题讨论】:

【参考方案1】:

Github 永远不会访问您的 Jenkins 服务器,因为您的服务器只能在内部网络中访问。

错误很明显。

我们无法传递此有效负载:无法连接到服务器

http://192.168.99.101:32771 这与您的本地主机在从网络外部访问它方面相同。

可能的解决方案。

在可以访问 Internet 的远程服务器上运行 jenkins,并在 Github 的 webhook 中提供该 IP 将您的public IP 传递给Github,如果访问有任何问题,您可能仍然会使用define port forwarding。

【讨论】:

非常感谢。这对我来说真的很清楚。【参考方案2】:

对于 jenkins 服务器位于 AWS 的 Ec2 实例中的任何人,如果它位于私有子网中,您可以做两件事:

    将您的私有 ec2 移动到公共子网中 在公有子网中创建负载均衡器 (ALB),并将您的私有 ec2 实例附加到该负载均衡器。然后使用 ALB 的地址为你的 github hook。

【讨论】:

以上是关于如何在设置 jenkins 触发器时在 github webhook 中修复“我们无法传递此有效负载:无法连接到服务器”?的主要内容,如果未能解决你的问题,请参考以下文章

监视Jenkins中的存储库,但不要拉

使用 jenkins 在 Windows 远程环境 (VM) 上触发脚本

如何在远程访问其 JSON API 时在 Jenkins 中进行身份验证?

如何使 Jira 触发器插件在 Jenkins 中工作?

Jenkins CI:如何在 SVN 提交上触发构建

如何让通用 Webhook 触发器插件与 Jenkins 中的多分支管道一起使用?