有没有办法重复构建N次? (与最后一次构建的状态无关)。构建是参数化的,目前我正在使用Jenkins参数化触发器插件,它被设置为触发相同的构建,但这当然是无限循环。
我希望能够指定使用相同参数重复构建的次数。
答案 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,如果您只想在构建完成后开始下一次迭代),请设置以下内容:
<强>更新强>
循环的另一种方法是减少预定义参数中的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)
嗯,这个问题没有简单的解决方案,但它可以轻松编写脚本。有几种方法可以做到这一点:
此插件将允许您编写项目构建流程的执行方式。您可以将构建脚本编写为并行运行,根据需要重试失败的构建,以及更多。我会尝试一下,创建一个具有所需重试次数的脚本。我认为这是你最好的选择。
您可以尝试使用Fail the Build Plugin和Retry Failed Builds或Periodic Reincarnation Plugin
它将使您能够有目的地打破构建,然后另一个插件将尝试一次又一次地构建它。在这里控制重试次数并不容易 - 您必须根据构建过程中的脚本中的变量或其他内容更改构建的状态。但是,嘿,也许这也是一个解决方案。
您可以基于RabbitMQ的更复杂的解决方案 - 您可以在队列中放置多个消息以多次构建项目,然后根据这些消息构建项目。
< / LI>您可以将构建基于BPM:JBPM Plugin与JBPM Workflow Plugin或Jenkow
我可能会提出更多解决方案,但上面的第一个可能是一个很好的起点...