在Jenkins中重复构建n次

时间:2013-08-01 07:31:09

标签: jenkins

有没有办法重复构建N次? (与最后一次构建的状态无关)。构建是参数化的,目前我正在使用Jenkins参数化触发器插件,它被设置为触发相同的构建,但这当然是无限循环。

我希望能够指定使用相同参数重复构建的次数。

2 个答案:

答案 0 :(得分:8)

可以通过添加一个评估 $ JOB_COUNTER 参数的条件步骤来创建Jenkins作业的重复循环(不是无限),该参数在每次迭代时都会减少。

为此,首先创建一个新的String参数“JOB_COUNTER”,默认值为1。

然后使用EnvInject plugin,并选中“为运行准备环境”+“覆盖构建参数”,并添加“已评估Groovy脚本“:

def map  = [:]
int newJobCounter = JOB_COUNTER.toInteger() - 1
println "Decreasing JOB_COUNTER from " + JOB_COUNTER + " to " + newJobCounter  
map.put("JOB_COUNTER", newJobCounter)
return map

最后,使用Conditional BuildStep plugin + Parameterized Trigger plugin(以及可选的PostBuildScript plugin,如果您只想在构建完成后开始下一次迭代),请设置以下内容: enter image description here

<强>更新

循环的另一种方法是减少预定义参数中的JOB_COUNTER(而不是EnvInject内部):

JOB_COUNTER=${JOB_COUNTER}-1

然后,要在每次迭代时正确更新JOB_COUNTER,请在EnvInject groovy中使用evaluate()方法而不是toInteger():

int newJobCounter = evaluate(JOB_COUNTER)
println "Evaluating JOB_COUNTER: " + JOB_COUNTER + " => " + newJobCounter  
map.put("JOB_COUNTER", newJobCounter)

最后,条件行动应该是:

$JOB_COUNTER > Greater than 1

答案 1 :(得分:2)

嗯,这个问题没有简单的解决方案,但它可以轻松编写脚本。有几种方法可以做到这一点:

  1. 使用Build Flow Plugin

    此插件将允许您编写项目构建流程的执行方式。您可以将构建脚本编写为并行运行,根据需要重试失败的构建,以及更多。我会尝试一下,创建一个具有所需重试次数的脚本。我认为这是你最好的选择。

  2. 您可以尝试使用Fail the Build PluginRetry Failed BuildsPeriodic Reincarnation Plugin

    它将使您能够有目的地打破构建,然后另一个插件将尝试一次又一次地构建它。在这里控制重试次数并不容易 - 您必须根据构建过程中的脚本中的变量或其他内容更改构建的状态。但是,嘿,也许这也是一个解决方案。

  3. 您可以基于RabbitMQ的更复杂的解决方案 - 您可以在队列中放置多个消息以多次构建项目,然后根据这些消息构建项目。

    < / LI>
  4. 您可以将构建基于BPM:JBPM PluginJBPM Workflow PluginJenkow

  5. 我可能会提出更多解决方案,但上面的第一个可能是一个很好的起点...