CANONICAL_ID_FORMATTER = new java.text.SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
NUMBER_XPATH = "/node()/number";
xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
for (j in Jenkins.instance.getAllItems(AbstractProject)) {
d = new File(j.rootDir, 'builds');
m = new TreeMap();
for (b in d.listFiles()) {
xml = new File(b, 'build.xml');
if (!xml.file) {
if (!b.getName().startsWith('last')) {
println("not a build dir: ${b}");
}
continue;
}
try {
CANONICAL_ID_FORMATTER.parse(b.name);
xpath.reset();
number = xpath.evaluate(NUMBER_XPATH, new org.xml.sax.InputSource(new java.io.FileReader(xml)), javax.xml.xpath.XPathConstants.NODE);
if (number) {
m.put(b.name, number.textContent);
} else {
println("cannot parse ${xml}");
}
} catch (java.text.ParseException e) {
if (!Util.isSymlink(b)) {
println("${b} should be a symlink but is not");
}
}
}
original = m.values().collect({Integer.parseInt(it)});
if (!original.equals(original.sort(false))) {
println("out of order in ${d}: ${m}");
}
}
A script like the following can be useful for diagnosis: