如何根据属性使用JFrog Artifactory REST API获取最新的NuGet工件版本?

时间:2019-04-10 14:40:58

标签: jenkins nuget artifactory devops

工件管理系统为 JFrog Artifactory Pro X

根据我在REST API的Jenkins作业中的REST API of JFrog,我尝试获取特定软件包的最新工件版本,在这种情况下,id为“ 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"
  } ]
}

基于属性“ nuget.id”获取最新版本的正确URL是什么?

1 个答案:

答案 0 :(得分:0)

根据doc artifactory / api / versions:在“ version”属性中搜索具有最新值的工件。仅返回具有明确定义的“版本”属性的工件。

在您的情况下,您没有设置“版本”属性(我想),而只有“ nuget.version”,该属性是在建立索引期间从nuget包中提取的元数据。

只需在软件包上设置一个“版本”属性,REST调用便会起作用。

您可以通过使用人工制品中的用户插件来自动执行此操作,该插件将在编写软件包后设置“版本”属性。

另一种不需要用户插件的解决方案是将本机nuget api与nuget v3 api一起使用:

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

将为您提供最新版本的json响应(以及doc https://docs.microsoft.com/fr-fr/nuget/api/search-query-service-resource中提到的其他版本的列表:“搜索结果对象中包含的元数据取自最新的程序包版本。版本数组是一个JSON对象“)