我们需要能够运行消耗两个奴隶的詹金斯工作。(或者,两个作业,如果我们可以保证它们同时运行,并且至少有一个可能知道另一个是什么。)这种情况是我们有一个重量级的应用程序,需要针对它进行测试。测试在一台计算机上运行,应用程序在另一台计算机上运行。将它们放在同一主机上是不切实际的。
现在,我们有一个Jenkins作业,该作业使用脚本启动专用的应用服务器,安装正确的版本,正确的数据,然后对其进行测试。这意味着当没有进行繁重的测试时,我不能使用专用的应用程序服务器来执行其他任务。这也几乎将我们限制为一个循环。能够动态分配应用服务器将允许更多服务器。
核心詹金斯显然没有办法做到这一点,但我希望有一些插件或黑客工具来实现这一目标。当前的测试版本是maven 2作业,但是如果我们必须将其包装在其他内容中,则可以配置。成功完成另一项工作可以拉开序幕,可以将其更改为开始两项,或者执行其他任何要求。
让我看看我是否理解这个问题。
您希望动态选择一个从属并在其上启动App Server。
当App服务器在从服务器上运行时,您不希望它运行任何其他作业。
但是,当App服务器未运行时,您希望将该Slave用作其他作业的其他Slave。
一种解决方法是标记奴隶。并使用“限制可以在哪里运行该项目”来使App Server和Test Suite在带有Slave标签的计算机上运行。
然后在从属节点中,将“执行者数”置为1。这将确保在任何时候都只运行一个Job。
下一步将创建一个作业,以启动App Server,然后在App Server启动作业成功后启动Test作业。
如果您的测试工作需要了解您的App服务器运行所在计算机的服务器详细信息,那么它将变得很有趣。