提交 a5f29868 编写于 作者: K Kohsuke Kawaguchi

recover from exception

上级 c93f3a6b
...@@ -38,7 +38,7 @@ import static hudson.init.InitMilestone.*; ...@@ -38,7 +38,7 @@ import static hudson.init.InitMilestone.*;
*/ */
public class GroovyInitScript { public class GroovyInitScript {
@Initializer(after=JOB_LOADED) @Initializer(after=JOB_LOADED)
public static void init(Jenkins j) throws IOException { public static void init(Jenkins j) {
new GroovyHookScript("init").run(); new GroovyHookScript("init").run();
} }
} }
...@@ -11,9 +11,10 @@ import java.net.URL; ...@@ -11,9 +11,10 @@ import java.net.URL;
import java.util.Arrays; import java.util.Arrays;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import static java.util.logging.Level.WARNING;
/** /**
* A collection of Groovy scripts that are executed as various hooks. * A collection of Groovy scripts that are executed as various hooks.
* *
...@@ -42,20 +43,28 @@ public class GroovyHookScript { ...@@ -42,20 +43,28 @@ public class GroovyHookScript {
this.hook = hook; this.hook = hook;
} }
public void run() throws IOException { public void run() {
Jenkins j = Jenkins.getInstance(); Jenkins j = Jenkins.getInstance();
final String hookGroovy = hook+".groovy"; final String hookGroovy = hook+".groovy";
final String hookGroovyD = hook+".groovy.d"; final String hookGroovyD = hook+".groovy.d";
URL bundled = j.servletContext.getResource("/WEB-INF/"+ hookGroovy); try {
execute(bundled); URL bundled = j.servletContext.getResource("/WEB-INF/"+ hookGroovy);
execute(bundled);
} catch (IOException e) {
LOGGER.log(WARNING, "Failed to execute /WEB-INF/"+hookGroovy,e);
}
Set<String> resources = j.servletContext.getResourcePaths("/WEB-INF/"+ hookGroovyD +"/"); Set<String> resources = j.servletContext.getResourcePaths("/WEB-INF/"+ hookGroovyD +"/");
if (resources!=null) { if (resources!=null) {
// sort to execute them in a deterministic order // sort to execute them in a deterministic order
for (String res : new TreeSet<String>(resources)) { for (String res : new TreeSet<String>(resources)) {
bundled = j.servletContext.getResource(res); try {
execute(bundled); URL bundled = j.servletContext.getResource(res);
execute(bundled);
} catch (IOException e) {
LOGGER.log(WARNING, "Failed to execute " + res, e);
}
} }
} }
...@@ -72,8 +81,9 @@ public class GroovyHookScript { ...@@ -72,8 +81,9 @@ public class GroovyHookScript {
if (scripts!=null) { if (scripts!=null) {
// sort to run them in a deterministic order // sort to run them in a deterministic order
Arrays.sort(scripts); Arrays.sort(scripts);
for (File f : scripts) for (File f : scripts) {
execute(f); execute(f);
}
} }
} }
} }
...@@ -85,10 +95,14 @@ public class GroovyHookScript { ...@@ -85,10 +95,14 @@ public class GroovyHookScript {
} }
} }
protected void execute(File f) throws IOException { protected void execute(File f) {
if (f.exists()) { if (f.exists()) {
LOGGER.info("Executing "+f); LOGGER.info("Executing "+f);
execute(new GroovyCodeSource(f)); try {
execute(new GroovyCodeSource(f));
} catch (IOException e) {
LOGGER.log(WARNING, "Failed to execute " + f, e);
}
} }
} }
...@@ -96,7 +110,7 @@ public class GroovyHookScript { ...@@ -96,7 +110,7 @@ public class GroovyHookScript {
try { try {
createShell().evaluate(s); createShell().evaluate(s);
} catch (RuntimeException x) { } catch (RuntimeException x) {
LOGGER.log(Level.WARNING, "Failed to run script " + s.getName(), x); LOGGER.log(WARNING, "Failed to run script " + s.getName(), x);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册