【问题标题】:How can I list successful jenkins builds using a groovy script in a deploy job?如何在部署作业中使用 groovy 脚本列出成功的 jenkins 构建?
【发布时间】:2014-12-08 15:41:12
【问题描述】:

我有一个 Jenkins 部署作业,它从构建作业中复制工件。在我的部署作业中,我在 Extensible Choice 参数中使用了一个 groovy 脚本(见下文),以在下拉列表中显示该构建作业的成功构建列表。我想增强 groovy 脚本以仅列出该构建作业的成功构建。我该怎么做?

def builds = []
def job = jenkins.model.Jenkins.instance.getItem(JOB-NAME)
job.builds.each {
    def build = it
    it.badgeActions.each {
        builds.add(build.displayName[1..-1])
    }
}
builds.unique();

【问题讨论】:

  • JOB-NAME 的格式是什么?如何从我的系统中导出它?我已经尝试了几件事,但没有任何工作......

标签: groovy jenkins


【解决方案1】:

我设法弄明白了……见下面的代码 sn-p

def builds = []

def job = jenkins.model.Jenkins.instance.getItem(JOB-NAME)
job.builds.each {
    def build = it
    if (it.getResult().toString().equals("SUCCESS")) {
        it.badgeActions.each {
             builds.add(build.displayName[1..-1])
        }
    }
}    
builds.unique();

【讨论】:

  • job.builds.findAll{ it.result.toString()=='SUCCESS' && it.badgeActions }.collect{ it.displayName[1..-1] }
  • 谢谢,更简洁...也会尝试您的解决方案
  • 使用hudson.model.Result.SUCCESS == it.result 比转换成字符串效率更高
【解决方案2】:

在 Jenkins 2.289.2 中,工作代码如下:

def builds = []

def job = jenkins.model.Jenkins.instance.getItem(JOB-NAME)
job.builds.each {
    if (it.result == hudson.model.Result.SUCCESS) {
        builds.add(it.displayName[1..-1])
    }
}

return builds

不同之处在于没有 badgeActions,它仅显示 Jenkins 升级之前的构建。

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多