如何仅使用 curl 在 Artifactory Repo 子文件夹中搜索
How to search in Artifactory Repo sub folder only using curl
所以我之前有一个脚本可以在我的 Artifactory 存储库中搜索文件夹中的某个 属性。
curl -i -X GET "${ARTIFACTORY_URI}/api/search/prop?my-prop=aaa&repos=my-repo
到目前为止一切顺利。我部署工件的方式是将它们放在子文件夹中,每个子文件夹都分配了 属性 my-prop。然后当我 运行 这个命令时,我得到了满足我的搜索条件的子文件夹列表。这是有效的,因为子文件夹都直接在 repo my-repo 中。
但是现在我们不得不对 Artifactory 进行一些重组。现在,我要列出的子文件夹位于存储库内子文件夹内的子文件夹中。我的命令仍然有效,但它 returns 所有子文件夹。
例如考虑这个:
my-repo:
* folder1
+ folder1-1
- folder1-1-1 (my-prop=aaa)
- folder1-1-2 (my-prop=bbb)
+ folder1-2
- folder1-2-1 (my-prop=aaa)
* folder2
+ folder2-1
- folder2-1-1 (my-prop=aaa)
所以当我使用相同的命令搜索 my-prop=aaa 时,我现在得到的是 folder1-1-1、folder1-2-1 和 folder2-1-1。但是我想做的是将搜索限制在子子文件夹folder1-1。我试图简单地将路径添加到 repos
参数,但它不起作用。
curl -i -X GET "${ARTIFACTORY_URI}/api/search/prop?my-prop=aaa&repos=my-repo/folder1/folder1-1
所以我的问题是如何做到这一点? Artifactory 网站是火车残骸,当然不是很有帮助。我可以使用额外的 folder/path 参数吗?我想指出,我正在使用一个非常受限的客户系统并且无法访问 JFrog CLI 工具,所以我必须使用 curl 和 wget 来做所有事情。
非常感谢任何帮助!!!
你应该可以使用 AQL (Artifactory Query Language)。
对于您的示例,使用如下内容:
curl -X POST "${ARTIFACTORY_URI}/api/search/aql" \
-H 'Content-Type: text/plain' \
--data 'items.find({"repo":"my-repo","@my-prop":"aaa","path":"folder1","type":"folder"})'
这将在 my-repo
中使用给定的 属性 和确切路径 folder1
搜索 文件夹 。如果路径应该是模式而不是完全匹配,则可以使用其他运算符,例如 $match
。
有关完整的 AQL 语法和准则,请参阅:Artifactory Query Language
所以我之前有一个脚本可以在我的 Artifactory 存储库中搜索文件夹中的某个 属性。
curl -i -X GET "${ARTIFACTORY_URI}/api/search/prop?my-prop=aaa&repos=my-repo
到目前为止一切顺利。我部署工件的方式是将它们放在子文件夹中,每个子文件夹都分配了 属性 my-prop。然后当我 运行 这个命令时,我得到了满足我的搜索条件的子文件夹列表。这是有效的,因为子文件夹都直接在 repo my-repo 中。
但是现在我们不得不对 Artifactory 进行一些重组。现在,我要列出的子文件夹位于存储库内子文件夹内的子文件夹中。我的命令仍然有效,但它 returns 所有子文件夹。
例如考虑这个:
my-repo:
* folder1
+ folder1-1
- folder1-1-1 (my-prop=aaa)
- folder1-1-2 (my-prop=bbb)
+ folder1-2
- folder1-2-1 (my-prop=aaa)
* folder2
+ folder2-1
- folder2-1-1 (my-prop=aaa)
所以当我使用相同的命令搜索 my-prop=aaa 时,我现在得到的是 folder1-1-1、folder1-2-1 和 folder2-1-1。但是我想做的是将搜索限制在子子文件夹folder1-1。我试图简单地将路径添加到 repos
参数,但它不起作用。
curl -i -X GET "${ARTIFACTORY_URI}/api/search/prop?my-prop=aaa&repos=my-repo/folder1/folder1-1
所以我的问题是如何做到这一点? Artifactory 网站是火车残骸,当然不是很有帮助。我可以使用额外的 folder/path 参数吗?我想指出,我正在使用一个非常受限的客户系统并且无法访问 JFrog CLI 工具,所以我必须使用 curl 和 wget 来做所有事情。
非常感谢任何帮助!!!
你应该可以使用 AQL (Artifactory Query Language)。
对于您的示例,使用如下内容:
curl -X POST "${ARTIFACTORY_URI}/api/search/aql" \
-H 'Content-Type: text/plain' \
--data 'items.find({"repo":"my-repo","@my-prop":"aaa","path":"folder1","type":"folder"})'
这将在 my-repo
中使用给定的 属性 和确切路径 folder1
搜索 文件夹 。如果路径应该是模式而不是完全匹配,则可以使用其他运算符,例如 $match
。
有关完整的 AQL 语法和准则,请参阅:Artifactory Query Language