Groovy脚本让Jenkins触发时间

时间:2017-08-09 06:40:44

标签: jenkins groovy

我正在尝试获取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
}

1 个答案:

答案 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