Continuous integration Jenkins针对不同的配置制定了不同的时间表

Continuous integration Jenkins针对不同的配置制定了不同的时间表,continuous-integration,jenkins,Continuous Integration,Jenkins,我正在处理一个多配置Jenkins项目。两个配置轴是Win/Linux和32/64位。我希望在版本控制更改时构建主配置(32位Windows),但每周只构建一次其他配置(只是为了确保它们保持合理的最新状态) 有没有可能在不将项目分成多个单独项目的情况下实现该进度计划?不幸的是,目前还没有通过Jenkins直接完成。每个作业只有一个时间处理程序,多配置是一个作业,它有一个计时器 有一个黑客,但这将是艰难的,我不确定确切的脚本要求,但如果你可以检查一周中的哪一天,你可以在你的脚本中尝试这样的东西:

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


有没有可能在不将项目分成多个单独项目的情况下实现该进度计划?

不幸的是,目前还没有通过Jenkins直接完成。每个作业只有一个时间处理程序,多配置是一个作业,它有一个计时器

有一个黑客,但这将是艰难的,我不确定确切的脚本要求,但如果你可以检查一周中的哪一天,你可以在你的脚本中尝试这样的东西:

if (day == Sunday |OR| $NODE_NAME == win32), then:
  <carry out build steps here>
finish
如果(day==Sunday |或|$NODE_NAME==win32),则:
完成
这样:

  • 如果这一天是星期天,所有步骤都将执行,而不考虑节点
  • 如果节点名为win32,也将执行该步骤
  • 但是,如果一天不是星期天,并且$NODE_NAME是win64或linux32或linux64,则不会执行任何步骤
请注意,
$NODE\u NAME
是标准的Jenkins环境变量。但是,这假设您的构建是通过“执行Shell”或“执行Windows批处理”完成的。

有什么理由其他人不应该同时建造吗

你可以创建两个作业,一个是你的主任务,一个是自由风格的工作,另一个是WIN64/Linux的多配置,然后把它放在一个单独的、每周的定时器上。 为什么不每次构建所有可用配置?
-毕竟,这就是持续整合的全部理念

可以在短时间内删除这些生成的工件,
所以它们不会阻塞你的磁盘,但是如果有任何东西破坏了你的构建,你会马上知道的

还可以将从属队列设置为一次运行一个作业,以便生成不会使生成服务器过载

另一种解决方案需要:

  • 为您的构建提供两个“起点”
  • 所有奴隶都可以使用
将作业A1设置为每周计划程序,触发作业B(主多配置构建过程)。
设置Job_A2以在源代码发生更改时运行Job_B
设置作业B以了解它是由作业A1还是作业A2触发的(可以将其名称作为参数传递),
如果当前配置无效,还可以将作业B设置为忽略来自作业A2的调用(“退出0”)。与Windows-32位不同

这样,只要有源代码管理更改,所有4种配置都将运行,但实际上只有一种配置会生成


祝你好运

非常有创意的解决方案!我想你可能是对的,我每次都应该构建所有的配置。非常感谢Hanks,在构建脚本中加入日期检查是个聪明的主意。我想你们两个可能都是对的,我应该每次构建所有4种配置。我将使用win32构建作为“试金石”,以便它立即报告失败的构建。