我正在使用以下代码段来检索Jenkins plugin中的作业列表:
SecurityContext old = ACL.impersonate(ACL.SYSTEM);
for (AbstractProject<?, ?> job : Jenkins.getInstance()
.getAllItems(AbstractProject.class)) {
// useful work on jobs
}
SecurityContextHolder.setContext(old);
不幸的是,根据Jenkins日志,并非所有作业都是通过循环处理的。 我有Maven和FreeStyle工作,只有少数被丢弃。根据类层次结构,过滤器“AbstractProject.class”应返回所有内容。 有人可以指出文档或我遗失的东西吗?谢谢提前
答案 0 :(得分:0)
修正了重构循环的错误:
SecurityContext old = ACL.impersonate(ACL.SYSTEM);
for (AbstractProject<?, ?> job : Jenkins.getInstance()
.getAllItems(AbstractProject.class)) {
// useful work on jobs
}
SecurityContextHolder.setContext(old);
with:
ACL.impersonate(ACL.SYSTEM, new Runnable() {
@Override
public void run() {
for (AbstractProject<?, ?> job : Jenkins.getInstance()
.getAllItems(AbstractProject.class)) {
try {
processJob(job, remote, scm);
} catch (Exception jobProcessingException) {
LOGGER.severe("Something bad occured processing job "
+ job.getName());
jobProcessingException.printStackTrace();
}
}
}
});