2014-01-27 31 views
3

我有两个Jenkins作业,每当提交新变更时都会运行一个持续集成作业,并且每天中午都会执行构建/部署作业。我不希望构建同时运行,所以我使用Throttle Concurrent Builds插件强制只有这两个作业排队,如果其中任何一个已经在运行。我的其他任何工作都可以在这两项工作的同时运行。Jenkins在规定的时间范围内阻止构建特定作业

我希望构建/部署作业始终在中午运行,但有时候开发人员会在中午之前提交一个更改,导致构建/部署作业等到CI作业完成。

有没有办法在定义的时间范围内阻止CI作业,例如上午11:30到下午1点,以便构建/部署作业在中午不会被阻止?

+0

有趣的问题;我使用ant脚本来锁定2个并发作业。如果文件存在错误的作业出口,我将写入一个文件。不过,我要在我的CI上测试https://wiki.jenkins-ci.org/display/JENKINS/Configuration+Slicing+Plugin。我会尽快回复 – venergiac

回答

1

恕我直言有几种可能性:

  • 第一预步骤,检查日期和退出与错误,如果日期不符合要求
  • 两份工作这禁用和编程启用作业调用的REST

例如作业1

curl -X POST http://usr:[email protected]/job/joobname/disable 

和作业2

curl -X POST http://usr:[email protected]/job/joobname/enable 

在给定的时间。

+1

第一个选项不会在作业历史记录中创建一堆“失败”版本吗?至于第二种选择,我使用作业配置历史记录插件,每天启用/禁用作业将填写作业配置历史记录(我应该问如何在单独的问题中防止这种情况)。 – Jeffrey

+0

添加“if ['date +%k' -ge 22] || ['date +%k' -le 5];然后退出0;否则退出1; fi;”作为预先构建的步骤。它防止在晚上10点到6点之间开始建造。如果他们在如下时间开始,那么建筑可能仍然在平静的时期运行:9:59 pm。试图在安静期开始的构建将被标记为失败。 – marcv81

0

您可以尝试添加从上午11点30分到下午1点离线的从属节点,并限制由此引起的更改导致的构建。

第二种可能性是启用SCM轮询计划以在允许的时间范围内检查更改。

+2

感谢您的回答。我修改了SCM轮询计划: 'H/15 0-10,12-23 * * *' 因此,CI工作人员会在午夜和上午10:59之间每隔15分钟调查一次更改,然后中午至午夜,在中午之前跳过小时。 – Jeffrey

相关问题