从Azure功能 / Azure VM远程触发Jenkins作业



与詹金斯(Jenkins)相当新,根本无法使它起作用。我一直在浏览网络以寻求答案,但没有找到答案,或者可能不了解我该怎么办。

我在詹金斯(Jenkins)有工作(Python脚本)。但是其中之一需要通过URL转换为远程触发。我已经能够实现这一目标,当我使用URL从我们的网络内触发工作时,一切正常(Python,CMD,浏览器,Postman等)。

但是,当使用同一URL从Azure函数或Azure VM触发作业时,该作业并未触发(不同的IP-我相信这必须是问题)。我一直在尝试通过更改防火墙设置来打开当前运行Jenkins服务器的机器上的端口8080,但是无论HTTP帖子都无法通过。从Azure功能触发作业将是目标。

在詹金斯(Jenkins)方面,我在这里缺少一些明显的东西,还是只是我们需要使用VPN从外部连接到本地网络的事实,这是我们的防火墙阻止连接的事实。我们只在一台计算机上设置了詹金斯(在本地网络中运行的计算机),并且没有引入任何从属节点。

这确实听起来像是防火墙问题。有很多方法可以在Azure中实现此类本地实现,而无需向外部开放您的网络。

从最简单的方法开始


a。逻辑应用

逻辑应用程序,因为它支持本地数据网关,该应用程序允许其访问本地系统的数据。

这有几个组件

  1. 自定义连接器您必须创建一个可以通过本地数据网关连接的自定义连接器,并定义一个操作,该操作可以调用您的Jenkins Machine

  2. 设置本地数据网关
    您必须在本地网络上设置本地数据网关,以便它可以访问您的Jenkins Master(也可以与Jenkins Master同一主机)

  3. 创建逻辑应用
    这是您使用逻辑应用而不是功能应用程序的简单部分。您可以创建一个简单的HTTP触发逻辑应用程序,该应用使用您创建的自定义连接器来触发Jenkins Job


b。 Azure Automation

Azure Automation具有类似的功能,您可以在本地网络中部署混合工人并将作业安排到该工人中。

您可以根据您的要求部署以下任何一个工人

  1. Windows Worker
  2. Linux Worker

您要编写的运行手册可能是在Powershell或Python中,其目的就是致电Jenkins API开始工作。

将所有这些都安装到位,您只需要在混合工人上启动运行书即可。

您也可以从Webhook启动一本Runbook。


c。将您的本地网络连接到Azure

这更多是一种网络解决方案,您可以将本地网络连接到Azure VNET,从而允许该VNET中的任何资源访问您的本地系统。

如文档中所述,有几种方法可以实现这一目标

  1. VPN网关
  2. 快速路线

我不会深入了解这些设置。您可以参考文档以获取有关设置内容的详细说明。

设置后,您可以

  • 公开Jenkins
    为此,您可以简单地只需在VNET的NSG上打开一个端口,但我想这确实不建议您,因为您不妨直接将其直接在本地网络上公开。

    首选的方法是设置和使用基本上是反向代理的Azure应用程序网关。

  • 将您的功能或逻辑应用部署到VNET
    如果您不想将Jenkins终点暴露到外部,则可以部署

    • 功能应用程序进入应用程序服务环境(ASE)
    • 逻辑应用到集成服务环境(ISE)

    在这两种情况下,您都可以使用托管的IP(本地IP本身)直接调用Jenkins端点

最新更新