使用getAllItems API调用的不完整作业列表

时间:2015-05-18 13:49:51

标签: jenkins jenkins-plugins

我正在使用以下代码段来检索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”应返回所有内容。 有人可以指出文档或我遗失的东西吗?谢谢提前

1 个答案:

答案 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();
                            }

                        }
                    }
                });