使用 JQ 在 Artifactory 中获取最新的 Jar API

Get newest Jar in Artifactory using JQ API

我需要下载应用程序 JAR 来执行,我设法在我的脚本中找到了这一步:

jq '.files[] | select(.uri | contains("RELEASE") and contains(".jar"))'

这给了我一堆看起来像这样的多个块的结果:

{
  other versions
}
{
  "uri": "/2.0.6-RELEASE/app-name-2.0.6-RELEASE.jar",
  "size": 32981192,
  "lastModified": "2020-02-05T14:21:06.728-05:00",
  "folder": false,
  "sha1": "whatever",
  "sha2": "whatever2",
  "mdTimestamps": {
    "properties": "2020-02-05T14:21:13.468-05:00"
  }
}

根据文档,我尝试将其扩展为:

jq '.files[] | select(.uri | contains("RELEASE") and contains(".jar")) | max_by(.lastModified)' 但是它 returns 错误 jq: error (at <stdin>:3284): Cannot index string with string "lastModified"

有关将所有不同搜索过滤器组合在一起的文档含糊不清。请问我不确定正确的语法是什么。

我的目标:只检索一个元素,最好是 URI 字符串,这样我就可以在下一个命令中使用它直接获取 JAR,而无需进一步处理。

我还尝试了 max_by 的文档语法,后缀为:| {uri} - 同样的错误。

max_by 需要一个数组作为输入,因此本着您尝试的精神,您可能希望考虑:

.files
| map( select(.uri | contains("RELEASE")
                     and contains(".jar")))
| max_by(.lastModified)

p.s.

以后,请遵循以下指南 http://whosebug.com/help/mcve