2012-02-16 54 views
2

我在Jenkins设置了项目A和项目B.项目A自豪地独自站立。但是,项目B的测试依赖于A的实时服务器实例。Jenkins/Hudson中的跨项目依赖关系

问题:当项目A部署时,它将服务器关闭几十秒。如果项目B当时正在进行测试,他们会受到束缚,耶稣会哭泣。

我知道了以下解决方案:

  • 存根出在B的测试。 (太复杂,不会发生,无论如何都是集成测试。)
  • 使B在Jenkins中成为A的依赖。 (意思是我们不能先测试B)
  • 做一个交错部署的A,所以总是有一台服务器在池中。 (我们正在看这个,但并不是微不足道的。)

但是有没有Jenkins解决方案?我想说“不要运行任务部署A如果任务测试B正在运行”,但我不能找出一种方法来做到这一点,而不实际合并构建。

+1

看来A是B的依赖关系:你让它们颠倒了。 – dolmen 2012-04-17 11:50:27

+0

是的,B依赖于A,但据我所知,在Jenkins-land中没有办法表达这种关系(或者更具体地说,“不要在A做某事时建立B”):你只能做B完成后启动B。 – jpatokal 2012-04-18 04:11:34

回答

3

我知道的两种解决方案。

  1. 使用Locks and Latches Plugin,并使用在两个作业一个相同的锁和B
  2. 使用Throttle Plugin与类别,并使用相同的类别A和B.

都在这两种情况下, ,A和B都不能同时运行。

+0

现在锁定和锁存似乎已被弃用。 – TesterJeff 2013-07-23 15:14:05

+1

油门插件是首选;提供更多灵活性。 – 2013-07-24 17:36:41

+0

到目前为止,Throttle Plugin一直在为我工作。谢谢。 – TesterJeff 2013-07-24 22:42:33