如何从排队的作业中检索构建参数?

时间:2015-09-30 22:17:33

标签: groovy jenkins

我想编写一个系统groovy脚本来检查Jenkins中的排队作业,并提取作为计划作业时提供的构建参数(以及构建原因作为奖励)。想法?

具体做法是:

var locationIds = locationsToCompare.Select(location => location.ID);
noneEmployees = employees.Where(employee => !company.IsNone ^ locationIds.Contains(employee.LocationID));
locationEmployees = employees.Except(noneEmployees);

检索排队的项目。我不能为我的生活找出构建参数所在的位置。

我最接近的是:

def q = Jenkins.instance.queue
q.items.each { println it.task.name }

这让我知道了:

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  it.task.properties.each { key, val ->
    println("  ${key}=${val}")
  }
}

1 个答案:

答案 0 :(得分:7)

队列元素本身的 params 属性包含一个字符串,其中的参数采用属性文件格式 - key=value,其中多个参数由换行符分隔。

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  println("Parameters: ${it.params}")
}

的产率:

dbacher params:
Parameters: 
MyParameter=Hello world
BoolParameter=true

我不是Groovy专家,但在探索Jenkins脚本界面时,我发现以下功能非常有用:

def showProps(inst, prefix="Properties:") {
  println prefix
  for (prop in inst.properties) {
    def pc = ""
    if (prop.value != null) {
      pc = prop.value.class
    }
    println("  $prop.key : $prop.value ($pc)")
  }
}

def showMethods(inst, prefix="Methods:") {
  println prefix
  inst.metaClass.methods.name.unique().each { 
    println "  $it"
  }
}

showProps函数显示队列元素具有另一个名为 cause 的属性,您需要对其进行更多解码:

causes : [hudson.model.Cause$UserIdCause@56af8f1c] (class java.util.Collections$UnmodifiableRandomAccessList)