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

标签 jenkins nuget artifactory devops

Artifactory 管理系统是JFrog Artifactory Pro X

根据REST API of JFrog在我使用 REST API 的 Jenkins 工作中,我尝试获取特定包的最新 Artifactory 版本,在本例中,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"
}

我尝试使用以下网址https://artifactory.myserver.net/artifactory/api/versions/_any/_any?nuget.id=MyLib,但得到了

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

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

最佳答案

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

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

只需在包上设置“版本”属性,REST 调用就会起作用。

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

无需用户插件的另一个解决方案是使用 native nuget api,例如 nuget v3 api :

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

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

关于jenkins - 如何根据属性使用 JFrog Artifactory REST API 获取最新的 NuGet Artifactory 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55615354/

相关文章:

linux - 在 Linux 上卸载 NuGet 包

nhibernate - 使用 Nuget 升级 NHibernate 和 NHibernate Validator

maven - 有没有办法通过 settings.xml 禁用 maven-deploy-plugin 的部署目标

gradle - 通过 gradle 将 zip(自定义 gradle 包装器)上传到 artifactory

artifactory - 将 Artifactory 中的特定构建提升到不同的存储库

linux - 不通过su <username>命令切换到新用户的主目录

qt - 执行Google Test后,Jenkins Build脚本退出

visual-studio - 有条件地包含 NuGet 包

linux - 多分支管道 github webhook

maven - 目标 org.apache.maven.plugins 的执行 default-cli :maven-release-plugin:2. 2.2 :prepare failed. NullPointerException