如果jenkins slave自身管道的作业正在jenkins slave上运行,则阻止作业在jenkins slave上运行

wkyowqbh  于 2023-02-07  发布在  Jenkins
关注(0)|答案(2)|浏览(227)

我有主jenkins和从jenkins。我将从jenkins的构建执行器数保持为1。从Jenkins还有1个管道(假设管道A)。假设从jenkins自己的管道中的作业正在运行(作业A)。我为从jenkins调度主jenkins中的作业(作业B)。我不希望作业A运行时作业B也运行,因为两个作业都使用共享资源。
现在,作业B与作业A并行运行,这导致作业A失败。
怎么做?谢谢!

y3bcpkx1

y3bcpkx12#

您的实现有点棘手,因为您讨论的是具有2个独立Jenkins示例的2台独立计算机。一种选择是删除从属计算机中的Jenkins示例,并将在其上运行的Jenkins作业移到主计算机上。然后,您可以调度该作业,使其在由主计算机管理的同时使用从属计算机的资源。如果执行此操作,由于您已经将执行器的数量设置为1,因此不需要进一步的配置。
如果这不可能,另一个选择是找到一种方法,让它们在构建正在运行时相互通信。考虑this answer的第三点。您可以在数据库中的某个地方有一个变量,当一个作业开始时,它会更新该变量。在第二个作业开始之前,它必须轮询该变量,以查看是否有作业已经运行。如果有,则构建不会开始。如果否,则开始构建并更新变量。
另一个不太优雅的解决方案是在两台机器都可以访问的位置简单地创建一个文本文件,并将变量数据写入其中,而不是写入数据库。

相关问题