詹金斯(Jenkins)刚刚加入新手,根本无法使它正常工作。我一直在网上寻找答案,但没有找到答案,或者可能不了解我应该怎么做。
我在Jenkins中有当前计划的工作(Python脚本)。但是其中之一需要转换为通过URL远程触发。我已经实现了这一点,当我使用URL从办公室的网络(Python,CMD,浏览器,邮递员等)中触发Job时,一切工作正常。
但是,当使用相同的URL从Azure Functions或Azure VM触发作业时,不会触发该作业(不同的IP-我认为这一定是问题所在)。我一直在尝试通过更改防火墙设置在当前运行我们的Jenkins服务器的计算机上打开端口8080,但是无论HTTP POST是否无法通过。目标是从Azure Functions触发作业。
关于Jenkins,是否有明显的我想念的地方?或者仅仅是因为我们的防火墙正在阻止连接,因为我们需要使用VPN从外部连接到我们的本地网络。我们仅在一台计算机(在本地网络中运行的计算机)上设置了詹金斯,而没有引入任何从属节点。
答案 0 :(得分:0)
这确实听起来像是防火墙问题。有很多方法可以在Azure中实现此类本地实现,而无需向外部开放网络。
从最简单的方法开始
Logic Apps是因为它支持On-Premises Data Gateway,使它可以访问本地系统中的数据。
它有几个组成部分
自定义连接器 您将必须create a custom connector才能通过本地数据网关进行连接,并定义了一个可以调用您的Jenkins机器的动作
设置本地数据网关
您必须在本地网络上setup the on-premises data gateway才能访问您的Jenkins主服务器(也可以与Jenkins主服务器位于同一主机上)
创建逻辑应用
这是使用逻辑应用程序而不是功能应用程序的简单部分。您可以创建一个简单的HTTP triggered Logic App,使用创建的自定义连接器来触发Jenkins作业
Azure Automation具有类似的功能,您可以在内部部署网络中部署Hybrid Worker并将作业计划到该工作器中。
您可以根据需要部署以下任何一个工作人员
您要编写的Runbook可以位于PowerShell或Python中,其目的是仅调用Jenkins API即可开始工作。
所有这些都准备就绪,您只需要start the runbook on the hybrid worker。
您也可以start a runbook from a webhook。
这更多是一种网络解决方案,您可以将内部部署网络连接到Azure VNET,从而允许该VNET中的任何资源访问您的内部部署系统。
中所述,有两种方法可以实现此目的我不会在这里深入介绍这些设置。您可以参考文档以获取有关设置的详细说明。
一旦设置,您可以
暴露詹金斯
为此,您可以简单地在VNET的NSG上打开一个端口,但是我不建议这样做,因为您最好直接将其公开在本地网络上。
首选方法是设置和使用Azure Application Gateway,它基本上是反向代理。
将功能或逻辑应用程序部署到VNET
如果您不想将Jenkins端点暴露在外面,则可以部署其中任何一个
在这两种情况下,您都可以使用托管IP的方式(内部IP本身)直接调用Jenkins端点