Получите новейший Jar в Artifactory, используя JQ API - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно загрузить 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)' Но он возвращает ошибку jq: error (at <stdin>:3284): Cannot index string with string "lastModified"

Документация расплывчата при объединении всех различных поисковых фильтров. Я не уверен, какой правильный синтаксис, пожалуйста.

Моя цель: получить только один элемент, в идеале только строку URI, чтобы я мог использовать чтобы получить JAR непосредственно в моей следующей команде без дальнейшей обработки.

Я также попробовал документированный синтаксис для max_by с суффиксом: | {uri} - та же ошибка.

1 Ответ

1 голос
/ 12 февраля 2020

max_by требует массив в качестве входных данных, поэтому, в духе вашей попытки, вы можете sh рассмотреть:

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

ps

В будущем, пожалуйста, следуйте руководящие принципы на { ссылка }

...