Jenkins针对不同配置的不同时间表

时间:2012-10-04 17:04:51

标签: continuous-integration jenkins

我正在使用多配置Jenkins项目。两个配置轴是Win / Linux和32/64位。我想在版本控制发生变化时构建主要配置(32位Windows),但每周只构建一次其他配置(只是为了确保它们保持合理的最新状态)。

是否有可能在不将项目分解为多个单独项目的情况下实现此计划?

2 个答案:

答案 0 :(得分:1)

遗憾的是,此时AFAIK还没有直接通过Jenkins。每个作业只有一个时间处理程序,多配置是单个作业,它有一个计时器。

有一个hack,但它会很难,而且我不确定所需的确切脚本,但是如果你可以查看一周中的某一天,你可以在你的脚本中尝试这样的事情:

if (day == Sunday |OR| $NODE_NAME == win32), then:
  <carry out build steps here>
finish

这样:

  • 如果当天是星期日,则无论节点如何,都将执行所有步骤。
  • 如果节点名称为win32,则也执行步骤swill。
  • 但是,如果日期不是星期日且$ NODE_NAME是win64或linux32或linux64,则不会执行任何步骤。

请注意,$NODE_NAME是标准的Jenkins环境变量。但是,这假设您的构建是通过“执行Shell”或“执行Windows批处理”完成的

其他人不应该同时建造吗?

您可以创建两个作业,一个用于主要作业,因此它是一个自由风格的作业,另一个作为Win64 / Linux的多配置,并将其保留在单独的每周计时器上。

答案 1 :(得分:1)

请考虑一下:

为什么不建立所有可用的配置
- 毕竟,这就是持续整合的全部理念......

可以在短时间内丢弃这些构建的工件,
所以它们不会堵塞你的磁盘,但是如果有什么东西破坏你的构建 - 你马上就会知道它。

还可以将从属队列设置为一次运行单个作业,因此构建不会使构建服务器过载。

另一种解决方案要求:

  • 您的构建的两个“初学者”
  • 所有可用的奴隶

Job_A1 设置为触发 Job_B 的每周调度程序(主要多配置构建过程)。
每当有源代码更改时,设置 Job_A2 以运行 Job_B
设置 Job_B 以了解它是否由 Job_A1 Job_A2 触发(可以将其名称作为参数传递),
如果当前配置,还设置 Job_B 以忽略来自 Job_A2 (“退出0”)的来电。与 Windows-32bit 不同。

这样,只要有源控件更改,所有4个配置都会运行,但实际只会生成一个。

祝你好运!