我想编写一个系统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}")
}
}
答案 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)