Как получить последнюю версию артефакта NuGet с JFrog Artifactory REST API на основе свойства? - PullRequest
0 голосов
/ 10 апреля 2019

Система управления артефактами JFrog Artifactory Pro X .

В соответствии с REST API JFrog в моей работе Jenkins с REST API я пытаюсь получить последнюю версию артефакта определенного пакета, в данном случае идентификатор «MyLib».

Мой пакет NuGet хранится здесь: https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg?properties=nuget.version, что приводит к следующему ответу JSON:

{
  "properties" : {
    "nuget.version" : [ "1.0.0" ]
  },
  "uri" : "https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg"
}

Также со следующим URL: https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg?properties=nuget.id Я получаю действительный ответ JSON:

{
  "properties" : {
    "nuget.id" : [ "MyLib" ]
  },
  "uri" : "https://artifactory.myserver.net/artifactory/api/storage/projectx-nuget/MyLib/MyLib.1.0.0.nupkg"
}

Я пытался использовать следующий URL https://artifactory.myserver.net/artifactory/api/versions/_any/_any?nuget.id=MyLib, но получил

{
  "errors" : [ {
    "status" : 404,
    "message" : "Not Found"
  } ]
}

Какой правильный URL-адрес для получения последней версии на основе свойства "nuget.id"?

1 Ответ

1 голос
/ 09 мая 2019

В соответствии с артефактом документации / api / version: поиск артефактов с последним значением в свойстве version. Будут возвращены только артефакты с явно определенным свойством «версия».

В вашем случае у вас не установлено свойство "версия" (я полагаю), а только "nuget.version", который извлекает метаданные из пакетов nuget во время индексации.

Просто установите свойство version в пакете, и вызов REST будет работать.

Вы можете автоматизировать это с помощью пользовательского плагина в артефакте, который установит свойство "версия" после того, как пакет будет написан.

Другим решением без использования пользовательского плагина было бы использование нативного api nuget, например, с nuget v3 api:

https://artifactory.myserver.net/artifactory/api/nuget/v3/projectx-nuget/query?q= MyLib & prerelease = false

Предоставит вам ответ json с последней версией (а также список других версий, упомянутых в документе https://docs.microsoft.com/fr-fr/nuget/api/search-query-service-resource: «Метаданные, содержащиеся в объекте результатов поиска, взяты из последней версии пакета. Каждый элемент в массиве версий есть объект JSON ")

...