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/


