【发布时间】:2020-12-15 10:21:42
【问题描述】:
我的问题是 Jenkins 中的可锁定资源。我目前有两个节点"nodeA" 和"nodeB",每个节点上都有一个USB Dongle,可以定义为可锁定资源。
某些 jenkins 作业只有在 USB 加密狗可用时才能启动。所以我想要实现的是,只要有一个 node/dongle_usb 空闲,就有两个 jenkins 作业与每个加密狗同时运行。
我创建了两个可锁定资源"USB_dongle" 和"USB_dongle2",每个资源都有一个标签,例如"usb_label",我希望这两个可锁定资源的标签相同,因为我不在乎它在哪个节点上将启动,我想让这两个工作一起运行。但问题是,当一个作业在一个节点上启动时,它会锁定两个"usb_dongle" & "usb_dongle2" 可锁定资源,因为标签"usb_dongle" 在每个可锁定资源中。如何在我的作业上保持相同的标签名称并让它们在两个节点上同时运行。因为目前,一个节点锁定两个可锁定资源,另一个等待"usb_label" 空闲。我想让詹金斯明白,同名的两个标签"usb_label"是“不同的”。
在本例中,将“USB_dongle”作为“GHS_dongle”: 节点配置:
作业配置:项目只能在带有“ghs”标签的节点上执行,还需要“ghs_dongle”标签的可锁定资源
【问题讨论】:
-
请通过添加 2 张图片(每个节点配置一张)来增强问题。也想看看您是如何配置标签的。
-
@mdabdullah 编辑完成
-
您的资源限制导致并发问题。您的标签很好,设计上应该锁定系统。如果您为两个节点都输入
Number of executors= 2,您能测试一下会发生什么吗?我想知道lock是应用于executor级别还是整个node。 -
使用 1 效果很好,非常感谢 :)
-
很高兴!请投票支持我之前的评论,并将此问题标记为
answered,并附上您的答案。