首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为给定的参数保持最新的稳定构建?

如何为给定的参数保持最新的稳定构建?
EN

Stack Overflow用户
提问于 2016-09-18 19:47:13
回答 2查看 996关注 0票数 0

我有一个参数的工作,我想保持一个给定参数的最新稳定的构建。

示例

代码语言:javascript
复制
#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的最后一个稳定状态?

我找不到一个插件来做这个。

如何定义识别参数值的保存策略?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-22 05:44:15

感谢@Alex插件Groovy Postbuild插件

我不熟悉groovy,也无法使用他提出的脚本,因为它的工作方式与我所希望的不完全一样。或者我不明白..。

我写了一个不同的脚本来考虑所有的建马厩和不马厩。也许它不是最佳的,但它的工作,如我所愿。

代码语言:javascript
复制
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++
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-09-19 07:01:57

步骤1:将Groovy Postbuild插件与以下脚本一起使用:

代码语言:javascript
复制
// 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)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39561959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档