我正在尝试获取Jenkins所有工作的触发时间,以便我可以决定何时安排它。 以下脚本显示一个对象,但无法获取计划时间和日期。
import org.jvnet.hudson.plugins.groovypostbuild.*;
import jenkins.plugins.slack.*;
jobs = hudson.model.Hudson.instance.getAllItems(FreeStyleProject)
for (job in jobs) {
timeT=job.triggers();
println "job: " + job.getFullName() + " " + timeT
}
答案 0 :(得分:-1)
可能为时已晚,但这有效(https://wiki.jenkins.io/display/JENKINS/Display+timer+triggers的小采用率)
import hudson.model.*
import hudson.triggers.*
for(item in Hudson.instance.items) {
if(item.disabled || item instanceof com.cloudbees.hudson.plugins.folder.Folder) {
continue;
}
for(trigger in item.triggers.values()) {
if(trigger instanceof TimerTrigger) {
println("--- Timer trigger for " + item.name + " ---")
println(trigger.spec + '\n')
}
}
}
创建此输出:
--- Timer trigger for XXX ---
30 4 * * 1-5
--- Timer trigger for YYY ---
0 6 * * 1-5
一个更复杂的脚本(来自同一来源的一些小的收养)
import hudson.model.*
import hudson.triggers.*
class Timer {
String name;
String spec;
int minute;
int hour;
Timer(pname,pspec) {
name=pname;
spec=pspec;
def parts=pspec.split(" ")
minute=parts[0].toInteger()
hour=parts[1].toInteger()
}
}
def timers = []
for(item in Hudson.instance.items) {
if(item instanceof com.cloudbees.hudson.plugins.folder.Folder) {
continue;
}
for(trigger in item.triggers.values()) {
if(trigger instanceof TimerTrigger) {
try {
def timer=new Timer(item.name,trigger.spec)
timers.add(timer)
} catch (Exception ex) {
println(trigger.spec + " " + item.name)
}
}
}
}
timers.sort{a,b -> a.hour <=> b.hour ?: a.minute <=> b.minute}
for (timer in timers) {
printf("%02d:%02d %s\n",timer.hour,timer.minute,timer.name)
}
创建:
00:30 MyFixedScheduledJob
@midnight MyAroundMidnightJob
H 06 * * 1-5 MyJobWithHash