触发 Jenkins 构建 REST 调用 - webhook - RFC 1918 - AWS Ec2

Trigger Jenkins build REST Call - webhook - RFC 1918 - AWS Ec2

我已经知道:使用 Jenkins Rest API(使用 Curl 命令行方式、Groovy、Python 等)方式,我能够从我的网站成功启动 Jenkins 构建本地机器或任何其他本地主机。网上有很多 posts/blogs 提供了很好的信息。匿名用户在 Jenkins 安全中具有整体读取访问权限,我使用 API 密钥用户 ID 和令牌密钥成功地 运行 这些。

我的问题案例:

  1. 就我而言,Jenkins master/instance 在 AWS ec2 实例中 运行ning。

  2. 我公司的 web 应用程序旨在创建警报(由 web 应用程序自动引发,以便用户可以看到它们并找到该警报的原因)。对于这些警报,我也会收到电子邮件通知和 Slack 消息。

  3. 在 webapp 中,用户可以创建各种警报,例如 "memory or free disk less than 900M" 等,方法是创建 query/condition 以触发该警报。此警报部分有效。

  4. 此网络应用程序还允许用户创建网络连接。 Web 连接可以配置为各种触发方法,例如在用户定义的 Slack #channel 中使用一些有意义的信息通知 Slack,或者创建 Pagerduty 警报或电子邮件通知,或者调用 REST API 调用端点。

  5. 可以将警报(项目符号 3)绑定/配置到给定的网络连接(项目符号 4)。

我的理解是,Web 应用程序 运行ning 在与 Jenkins 实例 运行ning 所在的 VPC 不同的 Amazon VPC 中。

我想做的是:在 webapp 中创建一个简单的警报,然后创建一个网络连接,我将在其中调用 Jenkins 作业 RESTful 并传递一些参数以启动构建 / 运行 (这将执行一些必要的操作)。

由于 VPC 不同——或者——由于某些其他原因(可能是 webapp 不支持 RFC1918 支持的 Webhooks),我认为由于 RFC 1918 机制,我无法启动 Jenkins 构建我的 Web 应用程序的 Webhook 正在触发 Jenkins Rest API 端点并收到以下错误消息。

我通过网络连接日志收到以下错误消息。

糟糕
无法保存通知接收器,请重试。 (400) 错误请求 URL 验证失败。 URI 主机未解析为 public ip。 : https://jenkins.server.company.com/job/Ops/job/recycleOrCleanupDiskMemoryResources/build?token=xxshenzi

有什么办法可以解决这个问题。我是否需要启动/创建一个 Amazon API 网关到 Jenkins 前端(以解决这个问题),即 webhookup 将与 Amazon API gayeway 对话,这将通过 [ 将请求定向到 Jenkins 实例=66=]打电话?我不想让它变得复杂,所以寻找一个简单的实现。

由于错误消息显示 "URI host does not resolve to a public ip",听起来 Jenkins 主机的 DNS 名称正在解析为 Jenkins 所在的 VPC 中的不可路由 IP 地址 运行。 API Gateway 目前不支持在客户的 VPC 内调用端点的功能,因此在这种情况下它无济于事。 (这是一个经常被要求的功能,我们希望在将来的某个时候将它添加到 API Gateway。)

为了在今天完成这项工作,您需要通过 Internet 访问 Jenkins 主机,方法是为其分配一个 public IP 或向 VPC 添加一个负载均衡器或代理,它可以将 Internet 流量路由到 Jenkins 主机。