使用 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
我需要下载应用程序 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