在Jenkins中重复构建n次

dan*_*god 6 jenkins

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

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

Noa*_*nos 10

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

为此,首先创建一个新的String参数"JOB_COUNTER",默认值为1.

然后使用EnvInject插件,选中" 为运行准备环境 "+" 覆盖构建参数 ",并添加" Evaluated Groovy script ":

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

最后,使用Conditional BuildStep插件 + 参数化触发器插件(以及可选的PostBuildScript插件,如果您只想在构建完成后开始下一次迭代),请设置以下内容: 在此输入图像描述

更新:

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

JOB_COUNTER=${JOB_COUNTER}-1
Run Code Online (Sandbox Code Playgroud)

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

int newJobCounter = evaluate(JOB_COUNTER)
println "Evaluating JOB_COUNTER: " + JOB_COUNTER + " => " + newJobCounter  
map.put("JOB_COUNTER", newJobCounter)
Run Code Online (Sandbox Code Playgroud)

最后,条件行动应该是:

$JOB_COUNTER > Greater than 1
Run Code Online (Sandbox Code Playgroud)


Łuk*_*nek 3

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

  1. 使用构建流程插件

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

  2. 您可以尝试使用“失败构建插件”“重试失败构建”“定期轮回插件”

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

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

  4. 您可以基于 BPM 进行构建:带有JBPM Workflow Plugin 的JBPM PluginJenkow

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