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