我在Jenkins有一些工作,使用Selenium通过网站的前端修改数据库。如果其中一些作业同时运行,则可能导致由于脏读而导致的错误。有没有办法迫使詹金斯的某些工作无法同时运行?我宁愿不必在数据库上放置或取锁,任何数量的用户都可以读取或修改锁定。
答案 0 :(得分:22)
您需要Throttle Concurrent Builds插件,它允许您定义全局和每节点信号量。
锁定和锁存正在deprecated,有利于Throttle Concurrent构建。
答案 1 :(得分:4)
我已经尝试了locks & latches插件和port allocator插件,以实现您想要做的事情。对我来说都不可靠。锁和闩锁工作一段时间,但我偶尔会挂起工作。除非你有多个jenkins节点,否则使用端口分配器作为黑客将会工作,但配置开销有点高。我最终解决的是另一个黑客,但它可靠地运行并使用核心Jenkins的东西(没有插件):
由于slave只有一个执行程序,因此绑定它的作业永远不会一起运行。
答案 2 :(得分:1)
如果您将数据库视为只能以独占方式使用的共享资源,则适合Lockable resources plugin的用例。
它正在积极地开发和改进,并且用途广泛。