jenkins - Artifactory 和 Jenkins - 获取具有最新/最大自定义属性的文件
问题描述
我有通用存储库“my_repo”。我从詹金斯那里上传了文件,路径为 my_repo/branch_buildNumber/package.tar.gz 和自定义属性“标签”,如“1.9.0”、“1.10.0”等。我想获取最新的项目/文件/最新的标签。
我试图从此链接修改示例 2 ... https://www.jfrog.com/confluence/display/JFROG/Using+File+Specs#UsingFileSpecs-Examples
...并添加排序并限制它在这里完成的方式... https://www.jfrog.com/confluence/display/JFROG/Artifactory+Query+Language#ArtifactoryQueryLanguage-limitDisplayLimitsandPagination
但我收到“未知属性描述”错误。
解决方案
与大多数 JFrog 客户端一样,Jenkins Artifactory 插件支持用于下载和上传通用文件的文件规范。文件规范架构在此处描述。在为下载文件创建文件规范时,您可以选择使用“模式”属性,其中可以包含通配符。例如,以下规范将 my-local-repo 存储库中的所有 zip 文件下载到本地 froggy 目录中:
{
"files": [
{
"pattern": "my-local-repo/*.zip",
"target": "froggy/"
}
]
}
或者,您可以使用“aql”而不是“模式”。以下规范提供与前一个相同的结果:
{
"files": [
{
"aql": {
"items.find": {
"repo": "my-local-repo",
"$or": [
{
"$and": [
{
"path": {
"$match": "*"
},
"name": {
"$match": "*.zip"
}
}
]
}
]
}
},
"target": "froggy/"
}
]
}
File Specs 中允许的 AQL 语法不包括 Artifactory Query Language 允许的所有内容。例如,您不能使用“include”或“sort”子句。这些限制已经到位,以使响应结构已知且恒定。
但是,无论您选择使用“模式”还是“aql”,文件规范仍然可以进行排序。支持抛出“sortBy”、“sortOrder”、“limit”和“offset”文件规范属性。例如,以下 File Spec 将仅下载 3 个最大的 zip 文件:
{
"files": [
{
"aql": {
"items.find": {
"repo": "my-local-repo",
"$or": [
{
"$and": [
{
"path": {
"$match": "*"
},
"name": {
"$match": "*.zip"
}
}
]
}
]
}
},
"sortBy": ["size"],
"sortOrder": "desc",
"limit": 3,
"target": "froggy/"
}
]
}
你可以用“pattern”代替“aql”做同样的事情:
{
"files": [
{
"pattern": "my-local-repo/*.zip",
"sortBy": ["size"],
"sortOrder": "desc",
"limit": 3,
"target": "local/output/"
}
]
}
您可以在此处阅读有关文件规范的更多信息。
(在此处回答此问题后,我们还使用这些示例更新了 File Specs 文档)。
推荐阅读
- sql-server - Powershell SQL 数据库备份/还原到 Azure Blob
- webpack - 使用 Babel 7 转译代码以在 Node12/Babel6 应用程序中使用
- php - 我创建了一个受密码保护的网页。它可以工作,但是会显示错误。警告:第 74 行 .... 中未定义的数组键“密码”
- c - 为具有相同端口的 ipv6 和 ipv4 创建套接字
- flutter - 使用颤振将多个参数传递给命名路由
- autodesk-forge - 数据管理 API 403 错误:无法验证此用户
- azure - API-Key 上的 ADF 替换函数问题
- nservicebus - 调用/请求创建的 IHandleMessages 实例
- c# - WPF 的第一步:如何填充网格中的单元格?
- java - 如何解压缩 jsonlz4 Mozilla Firefox 会话文件?