Sonatype Nexus搜索api不会返回所有工件

问题描述 投票:0回答:1

我们使用sonatype nexus OSS 3.14.0-04来存储我们所有的工件,并且我们使用Jenkins作为CI / CD。我最近介绍了快照支持。在詹金斯,我使用下面的常规脚本来获取所有工件版本并填充一个“主动选择”下拉列表:

#!/usr/bin/env  groovy
import groovy.json.JsonSlurper

#source can be "snapshot" or "release". - source is an Active choice parameter with these two options. I read from the source field.

def url = "http://<<<nexus-host>>>/service/rest/v1/search?repository=maven-" + source + "s&maven.groupId=com.xyz&maven.artifactId=rader"
def xml = url.toURL().text
JsonSlurper parser = new groovy.json.JsonSlurper()
Map parsedJson = parser.parseText(xml)
def versions = parsedJson.items.version

if (source.equalsIgnoreCase('snapshot')) {
    Set<String> modVersion = new HashSet<>()
    for (def item : versions) {
        modVersion.add(item.split("-").getAt(0) + "-SNAPSHOT")
    }

    return new ArrayList<>(modVersion).sort()
} else {
    return versions.reverse()
}

问题是,这并不总是返回快照和发行版中的所有工件。我必须删除一些较旧的工件,以使较新的工件出现在列表中。

我在日志中看不到任何可疑的东西,因此不确定如何继续进行故障排除。有没有更好的方法可以达到相同目的?任何指针将不胜感激。

api groovy nexus sonatype nexus3
1个回答
0
投票

出于性能和资源使用的考虑,对返回数据的所有nexus api操作进行了分页。如果结果包含多个页面,则该结果包含一个继续令牌,您可以在下一个查询中使用该令牌来获取下一个结果页面。

如果您的搜索返回的结果超出页面大小,则需要多次调用搜索URL,以将所有结果都保存在Jenkins脚本中(即,直到结果中没有更多的延续标记为止。)>]

© www.soinside.com 2019 - 2024. All rights reserved.