当我只想将机器连接到Jenkins主服务器时,最简单的Jenkins“云”是什么?

bxgwgixi  于 2022-11-02  发布在  Jenkins
关注(0)|答案(1)|浏览(143)

我可以使用如下语法启动Jenkins代理:

java -jar agent.jar -jnlpUrl http://hostname:8080/jenkins/computer/<agent_name>/slave-agent.jnlp -secret 12345 -workDir "/jenkins"

这是启动“永久代理”的模式--当我有特定的机器要用作代理时,它依赖于我事先知道每个代理是什么,但是当我事先不知道哪些机器可用时,有没有一个模式可以使用?
我无法在多个主机上运行上面的脚本:Jenkins要求每个代理的名称是唯一的。您不能有两个同名的代理,即使我使用主机名作为代理名称,我也需要在尝试启动代理之前预先定义它。
我的情况是这样的:
我想重用公司网络上的一些机器作为一个低规格的“云”。我希望他们能够运行一个脚本从一个共享文件夹,这只是添加到Jenkins系统。我不知道哪些机器将提前可用,我不想为每台机器编写新配置,我想让它这取决于谁拥有这台机器,不管这台机器是不是Jenkins的一部分,所以这意味着我不能使用SSH式启动。
我看到Jenkins有“云”的选择,但这些似乎都比我需要的复杂得多。我不想使用任何特定的云基础设施。我不想给予Jenkins大师任何特殊的云证书。
有没有办法配置一个非常简单的代理“云”,这样我就可以在每台机器上运行一个脚本,然后它就被添加到Jenkins中了?
我知道有各种云基础设施的插件,但它们似乎都依赖于特定的云基础设施提供商(如亚马逊,DigitalOcean)。我不想进入这个-这是一个更随意的事情!
那么有没有办法做到这一点呢?这是一个在Jenkins中的低工作量、最小配置、超通用的云,我可以在任意一组机器上运行启动脚本,让它们正常工作?

qyuhtwio

qyuhtwio1#

使用Jenkins Swarm Plugin有一个很好的解决方案:
Swarm插件使节点能够加入附近的Jenkins控制器,从而形成临时群集。此插件通过启动和关闭新代理,使团队成员能够为构建场贡献计算资源,或连接Jenkins控制器无法启动连接的代理,从而使Jenkins群集更易于扩展。
此插件由两部分组成:
1.可以加入现有Jenkins控制器的自包含客户端。
1.需要安装在Jenkins控制器上以接受Swarm客户端的插件。
这实际上不是云解决方案(尽管可以与云代理一起使用),而是使用反向方法的选项-这意味着您不从Jenkins控制器连接到从属设备,代理将自己连接到控制器。
每个连接代理根据其执行时使用的配置参数(标签、环境变量等)在controller中创建唯一的节点,从而形成连接到controller并可用于构建的代理群。
激活群只需要在想要连接的代理上运行一个小的java应用程序,用户可以随时终止该应用程序-导致代理从Jenkins控制器中删除自己并退出群。
此外,还有许多配置选项可用于配置代理在连接到控制器时将使用的不同节点配置。
这应该可以满足你的大部分重新配置,你可以创建一个简单的共享脚本来运行群客户端,然后从任何一台想要加入群的计算机(linux,windows,mac,任何VM)上运行它,而你所需要的只是安装Java。
我们在一个类似的案例中成功地使用了这个插件,在这个案例中,我们希望在需要时根据一些监视事件添加额外的节点,而且插件的灵活性允许我们以许多有用的方式使用Swarm选项。

相关问题