如何基于 属性 使用 JFrog Artifactory REST API 获取最新的 NuGet 工件版本?
How to get latest NuGet artifact version with JFrog Artifactory REST API, based on property?
工件管理系统是JFrog Artifactory Pro X。
根据 REST API of JFrog 在我的 Jenkins 工作中使用 REST API 我尝试获取特定包的最新工件版本,在这种情况下,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"
} ]
}
什么是正确的URL获取最新版本,基于属性"nuget.id"?
根据文档 artifactory/api/versions:在 "version" 属性 中搜索具有最新值的工件。仅返回明确定义了 "version" 属性 的工件。
在您的情况下,您没有设置 "version" 属性(我猜),但只有 "nuget.version",它是在索引期间从 nuget 包中提取的元数据。
只需在程序包上设置 "version" 属性 即可进行 REST 调用。
您可以使用 artifactory 中的用户插件自动执行此操作,该插件将在编写包后设置 "version" 属性。
另一种不需要用户插件的解决方案是使用原生 nuget api 例如 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 中提到的其他版本的列表:"The metadata contained in the search result object is taken from the latest package version. Each item in the versions array is a JSON object ")
工件管理系统是JFrog Artifactory Pro X。
根据 REST API of JFrog 在我的 Jenkins 工作中使用 REST API 我尝试获取特定包的最新工件版本,在这种情况下,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"
} ]
}
什么是正确的URL获取最新版本,基于属性"nuget.id"?
根据文档 artifactory/api/versions:在 "version" 属性 中搜索具有最新值的工件。仅返回明确定义了 "version" 属性 的工件。
在您的情况下,您没有设置 "version" 属性(我猜),但只有 "nuget.version",它是在索引期间从 nuget 包中提取的元数据。
只需在程序包上设置 "version" 属性 即可进行 REST 调用。
您可以使用 artifactory 中的用户插件自动执行此操作,该插件将在编写包后设置 "version" 属性。
另一种不需要用户插件的解决方案是使用原生 nuget api 例如 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 中提到的其他版本的列表:"The metadata contained in the search result object is taken from the latest package version. Each item in the versions array is a JSON object ")