PDFPrintE-mail

Hudson CI - Apply SCM build trigger for all jobs

Apply a SCM build trigger to all of your hudson jobs (projects). This batch job can be done with one simple groovy script.

Add a trigger if no trigger exists:
import hudson.model.* 
import hudson.triggers.*  

TriggerDescriptor description =
 Hudson.instance.getDescriptorOrDie(SCMTrigger.class)  
for(item in Hudson.instance.items) {
     AbstractProject project = (AbstractProject) item;
     println("Apply project: $item.name")
     def trigger = item.getTriggers().get(description)
     if(trigger != null && trigger instanceof SCMTrigger) {
         println("Found trigger: $trigger.spec")
     } else {
         def newTrigger = new SCMTrigger("* * * * *")
         project.addTrigger(newTrigger)
         println("Add trigger: $newTrigger.spec")
     }
} 
  Add new trigger and replace the old trigger's:
import hudson.model.* 
import hudson.triggers.*  

TriggerDescriptor description = Hudson.instance.getDescriptorOrDie(SCMTrigger.class)  
for(item in Hudson.instance.items) {
     AbstractProject project = (AbstractProject) item;
     println("Apply project: $item.name");
     def trigger = item.getTriggers().get(description);
     if(trigger != null && trigger instanceof SCMTrigger) {
         println("Found trigger: $trigger.spec");
         project.removeTrigger(trigger.getDescriptor());
     } 
     def newTrigger = new SCMTrigger("* * * * *");
     project.addTrigger(newTrigger);
     println("Add trigger: $newTrigger.spec");

} 

Open the hudson configutation page: "Manage Hudson > Script console" and run run this script. Restart the hudson ci server! That's it

Hudson CI Javadoc/API: http://hudson-ci.org/javadoc/