我正在使用多配置Jenkins项目。两个配置轴是Win / Linux和32/64位。我想在版本控制发生变化时构建主要配置(32位Windows),但每周只构建一次其他配置(只是为了确保它们保持合理的最新状态)。
是否有可能在不将项目分解为多个单独项目的情况下实现此计划?
答案 0 :(得分:1)
遗憾的是,此时AFAIK还没有直接通过Jenkins。每个作业只有一个时间处理程序,多配置是单个作业,它有一个计时器。
有一个hack,但它会很难,而且我不确定所需的确切脚本,但是如果你可以查看一周中的某一天,你可以在你的脚本中尝试这样的事情:
if (day == Sunday |OR| $NODE_NAME == win32), then:
<carry out build steps here>
finish
这样:
请注意,$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个配置都会运行,但实际只会生成一个。
祝你好运!