如何使用JFrog CLI按版本号对Artifactory软件包搜索结果进行排序?

克里斯

我需要Artifactory中获取特定NuGet软件包最新版本我使用以下JFrog CLI命令来接收所有版本的列表(后来使用),包括使用jq进行JSON解析:--limit=1

jfrog rt s myRepo/Path/ --props "nuget.id=MyLib" --sort-by=name --sort-order=desc  | jq -M -r ".[] | .props.\"nuget.version\" | .[]"

上面的示例将产生原始字符串输出,如下所示:

1.2.3.101
1.2.3.103
1.2.3.95
1.2.3.99
1.2.3.99-beta10
1.2.3.99-beta9

我的目标是获取按版本排序的输出

1.2.3.95
1.2.3.99
1.2.3.99-beta9
1.2.3.99-beta10
1.2.3.101
1.2.3.103

不幸的是我不能使用,--sort-by=created因为它可能与版本排序不同。即使我不使用--sort-by选项也不起作用。版本号也可以包含字母,例如“ -beta”。

在Artifactory TreeView中,它是正确的,但在CLI中是不正确的。

如何获得按版本号排序的结果?

您可以使用jq对版本号字符串进行排序。

如果字符串是“原始”字符串,每行一个,则可以使用以下jq程序:

def parse:
 sub("alpha"; "alpha.")
 | sub("beta"; "beta.") 
 | sub("gamma"; "gamma.")
 | sub("prerelease"; "prerelease.")
 | sub("debug"); "debug.")
 | [splits("[-.]")]
 | map(tonumber? // .) ;

[inputs]
| sort_by(parse)[]

这个jq程序可以这样运行:

jq -nrR -f program.jq versions.txt

使用样本版本号,将产生:

1.2.3.95
1.2.3.99
1.2.3.99-beta9
1.2.3.99-beta10
1.2.3.101
1.2.3.103

就您而言,通过修改程序以parse按照上面显示的方式使用无需再次调用jq就可以实现结果jq程序的主要部分可能看起来像这样:

map(.props["nuget.version"]) | sort_by(parse)[]

(当然,仅在使用inputsread时才需要-n选项。)

最高版本号

如果(如注释中所示)是您想要的最高版本号,则只需将最终版本更改[][-1]

... | sort_by(parse)[-1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Jfrog CLI将工件上传到Jfrog Artifactory?

如何使用程序集中的版本号创建预发布的nuget软件包

fglrx软件包的版本如何与AMD的版本号(例如Catalyst 12.3)相关联?

如何获取在特定日期之前发布的python软件包的版本号列表?

如何列出所有Flutter软件包和版本号

如何通过dpkg查找已安装软件包的版本号?

在编译tmux软件包时,如何设置$ tmux -V报告的版本号?

Gentoo软件包掩码无法使用确切的版本号

在Razor视图中使用Bower软件包版本号以获得CDN支持

如何在Laravel QueryBuilder / MySQL Spatial软件包中按距离对查询结果进行排序?

如何对具有软件版本号的表中的列进行排序?

如何使用JFrog Artifactory将GitHub代理为Go Repository?

如何使用 JFrog CLI 将 python 包发布到 Artifactory PyPi?

如何使用 jfrog cli 重新计算 repo 的索引?

如何使用 API 获取 Jfrog Xray scanArtifact 结果

使用Jfrog Artifactory开源

即使版本号相同,如何强制npm重新安装一个软件包?

如何为go.mod`文件中提及的go本地软件包提供版本号

使用“ nuget.exe恢复解决方案”时,软件包文件夹中的版本号错误

中央存储库如何对版本号进行排序?

如何在Ansible中对复杂的版本号进行排序

如何使用JFrog CLI将构建和工件发布到Artifactory?

在VSTS生成过程中,使用`.net pack`将内部版本号添加到软件包版本中

如何使用dotnet cli列出可用的软件包版本?

如何找到所有可用软件包的列表以及存储库中可用的最新版本号?

如何获取快照包的版本号?

如何使用 Azure DevOps 将 JFrog Artifactory 中的映像部署到 Azure Kubernetes 服务中

如何使用 REST API 从 jfrog artifactory 中查找具有特定属性值的工件

熊猫如何对具有列之一作为版本号的数据框进行排序?