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

Incomplete list of jobs using getAllItems API call

我正在使用以下代码片段检索 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 工作,只有少数被丢弃。根据 class 层次结构,过滤器 "AbstractProject.class" 应该 return 一切。 有人可以指出文档或我缺少的东西吗?提前致谢

通过重构循环修复了错误:

SecurityContext old = ACL.impersonate(ACL.SYSTEM);
for (AbstractProject<?, ?> job : Jenkins.getInstance()
                        .getAllItems(AbstractProject.class)) {

// useful work on jobs

}
SecurityContextHolder.setContext(old);

与 :

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

                        }
                    }
                });