我有一个参数的工作,我想保持一个给定参数的最新稳定的构建。
示例
#1 run with param=A -> stable
#2 run with param=B -> stable
#3 run with param=A -> unstable
#4 run with param=B -> stable
#5 run with param=A -> unstable我只保留了5个版本,并且我希望始终保持最新的、稳定的参数值构建。在我的示例中,如果下一个构建仍然是不稳定的,那么如何保持作业# 1,即参数A的最后一个稳定状态?
我找不到一个插件来做这个。
如何定义识别参数值的保存策略?
发布于 2016-09-22 05:44:15
感谢@Alex插件Groovy Postbuild插件
我不熟悉groovy,也无法使用他提出的脚本,因为它的工作方式与我所希望的不完全一样。或者我不明白..。
我写了一个不同的脚本来考虑所有的建马厩和不马厩。也许它不是最佳的,但它的工作,如我所愿。
def allBuilds = manager.build.project.getBuilds()
def lastSuccessParamA = false
def lastSuccessParamB = false
def count = 0
for (hudson.model.Run run : allBuilds) {
def param = run.buildVariables.get('param')
if (lastSuccessParamA == false && run.result.isBetterOrEqualTo( hudson.model.Result.SUCCESS ) && "A".equals(param)) {
manager.listener.logger.println( "keep last stable build with param = A : " + run)
lastSuccessParamA = true
} else if (lastSuccessParamB == false && run.result.isBetterOrEqualTo( hudson.model.Result.SUCCESS ) && "B".equals(param)) {
manager.listener.logger.println( "keep last stable build with param = B : " + run)
lastSuccessParamB = true
} else if (count > 5){
manager.listener.logger.println( "deleting build " + run)
run.delete()
} else {
manager.listener.logger.println( "keep build " + run)
count++
}
}发布于 2016-09-19 07:01:57
步骤1:将Groovy Postbuild插件与以下脚本一起使用:
// get *all* the good builds first
def goodBuilds = manager.build.project.getBuilds().findAll { it.result.isBetterOrEqualTo( hudson.model.Result.SUCCESS ) }
// then remove all except for the first one
goodBuilds.drop( 1 ).each {
manager.listener.logger.println( "deleting build " + it )
it.delete()
}这将确保只有最后一个成功(稳定)的构建仍然存在于构建历史中。
步骤2:将上面脚本中的goodBuilds.drop( 1 )替换为为任何给定参数值保留在goodBuilds中的第一个构建的代码。这是一个练习:-)
最重要的是,您仍然可以设置构建总数的限制(在您的例子中,是5)。
https://stackoverflow.com/questions/39561959
复制相似问题