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

Jenkins 使用getAllItems API调用的作业列表不完整,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我正在使用以下代码段检索中的作业列表: 不幸的是,根据Jenkins日志,并非所有作业都是通过循环处理的。 我有专业和自由式的工作,只有少数被丢弃。根据类层次结构,filter AbstractProject.class应该返回所有内容。 有人能指出我缺少的文件或东西吗?Thank by advance通过重构循环修复了该缺陷: SecurityContext old = ACL.impersonate(ACL.SYSTEM); for (AbstractProject<?, ?>

我正在使用以下代码段检索中的作业列表:

不幸的是,根据Jenkins日志,并非所有作业都是通过循环处理的。 我有专业和自由式的工作,只有少数被丢弃。根据类层次结构,filter AbstractProject.class应该返回所有内容。
有人能指出我缺少的文件或东西吗?Thank by advance

通过重构循环修复了该缺陷:

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

                        }
                    }
                });

也许你应该考虑在哪个用户中运行插件。可能那个用户没有足够的权限?对。我更新代码段:我使用模拟在系统标识下运行
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();
                            }

                        }
                    }
                });