詹金斯同时担任两名特工?

dms*_*dms 5 jenkins jenkins-plugins jenkins-agent

我们需要能够运行消耗两个代理的 Jenkins 作业。(或者,两个作业,如果我们可以保证它们同时运行,并且至少一个作业可以知道另一个作业是什么。)情况是,我们有一个重量级应用程序,我们需要对其运行测试。测试在一台机器上运行,应用程序在另一台机器上运行。将它们放在同一主机上是不切实际的。

现在,我们有一个 Jenkins 作业,它使用脚本来启动专用应用程序服务器,安装正确的版本、正确的数据,然后对其运行测试。这意味着,当没有进行繁重的测试时,我无法使用专用应用程序服务器来运行其他任务。它还几乎将我们限制在一个循环内。能够动态分配应用程序服务器将允许更多的应用程序服务器。

显然没有办法在核心 Jenkins 中做到这一点,但我希望有一些插件或黑客可以使这成为可能。当前的测试构建是一个 Maven 2 作业,但如果我们必须将其包装在其他东西中,那么它是可配置的。它是由另一项工作的成功完成开始的,该工作可以更改为开始两项,或者任何其他需要的工作。

Not*_*ica 1

让我看看我是否理解了这个问题。

  1. 您希望动态选择一个从属设备并在其上启动应用程序服务器。

  2. 当应用程序服务器在从属服务器上运行时,您不希望它运行任何其他作业。

  3. 但是,当应用程序服务器未运行时,您希望将该 Slave 用作其他作业的任何其他 Slave。

一种出路是给奴隶贴上标签。并使用“限制此项目可以运行的位置”使App Server和测试套件在带有Slave标签的机器上运行。

然后在从属节点中,将“# of executors”设置为 1。这将确保在任何时候只有一个作业会运行。

下一步将创建一个作业来启动应用程序服务器,然后在应用程序服务器启动作业成功后启动测试作业。

如果您的测试作业需要了解运行应用程序服务器的计算机的服务器详细信息,那么它会变得很有趣。