列出 JFrog Artifactory 上存储库中的所有工件
list all artifacts in a repository on JFrog Artifactory
我是 Artifactory 的新手。目前我正在做一个项目来列出存储库中的所有工件。
Artifactory version:4.1.3 Pro(关闭证书验证)
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({"repo":"war"}).include("name","repo","path","size").sort({"$desc":["size"]}).limit(10)"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /artifactory/api/search/aql was not found on this server.</p>
<hr>
<address>Apache/2.2.31 (Amazon) Server at artifactory.xxxx.com Port 443</address>
</body></html>
它抛出一个错误(错误的请求)。尝试列出以下 repos war,war-dev,war-release,webapp,webapp-dev 中的工件(从 Artifactory 数据库和 http 请求中获取 repos 列表) .
尝试匿名使用 REST 调用列出工件,但 $ARTIFACTORY_HOME/logs/request_trace.log $ARTIFACTORY_HOME/logs/request.log
中没有日志
从 artdb(Artifactory 数据库)和 artifactory url 获取 repos 列表。列出的回购协议各不相同。哪一个是正确的?
列出了这么多回购
mysql> select distinct(repo) from nodes;
| war |
| war-dev |
| war-release |
https://artifactory.xxxx.com/artifactory/repo/
webapp/
webapp-dev/
有人可以帮忙找出 repo 中的工件列表吗?谢谢!
AQL 是必经之路。你的查询是 almost 好(你忘记了所有以 war
或 web
开头的回购的 $match
。问题是卷曲。如果你想要在命令行中写入查询字符串,您需要转义所有内部 "
和 $
。这是工作查询:
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({\"type\" : \"file\",\"$or\":[{\"repo\" : {\"$match\" : \"war*\"}, \"repo\" : {\"$match\" : \"web*\"} }]}).include(\"name\",\"repo\",\"path\",\"size\").sort({\"$desc\": [\"size\"]}).limit(10)"
现在,这就是地狱。相反,考虑将查询写入文本文件并使用 -d @filename.aql
传递。在这种情况下,您不需要所有转义,查询将如下所示:
items.find({
"type" : "file",
"$or":[{
"repo" : {"$match" : "war*"},
"repo" : {"$match" : "web*"} }]})
.include("name","repo","path","size")
.sort({"$desc": ["size"]})
.limit(10)
这对我也有效。您可以按照@JBaruch 指定的方式编写命令,也可以运行 JSON AQL 文件。
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: application/json" -d @filename.aql
对我来说,当我使用 Content-Type text/plain 而不是 application/json 时它起作用了,即
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: text/plain" -d @filename.aql
我是 Artifactory 的新手。目前我正在做一个项目来列出存储库中的所有工件。
Artifactory version:4.1.3 Pro(关闭证书验证)
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({"repo":"war"}).include("name","repo","path","size").sort({"$desc":["size"]}).limit(10)"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /artifactory/api/search/aql was not found on this server.</p>
<hr>
<address>Apache/2.2.31 (Amazon) Server at artifactory.xxxx.com Port 443</address>
</body></html>
它抛出一个错误(错误的请求)。尝试列出以下 repos war,war-dev,war-release,webapp,webapp-dev 中的工件(从 Artifactory 数据库和 http 请求中获取 repos 列表) .
尝试匿名使用 REST 调用列出工件,但 $ARTIFACTORY_HOME/logs/request_trace.log $ARTIFACTORY_HOME/logs/request.log
从 artdb(Artifactory 数据库)和 artifactory url 获取 repos 列表。列出的回购协议各不相同。哪一个是正确的?
列出了这么多回购
mysql> select distinct(repo) from nodes;
| war |
| war-dev |
| war-release |
https://artifactory.xxxx.com/artifactory/repo/
webapp/
webapp-dev/
有人可以帮忙找出 repo 中的工件列表吗?谢谢!
AQL 是必经之路。你的查询是 almost 好(你忘记了所有以 war
或 web
开头的回购的 $match
。问题是卷曲。如果你想要在命令行中写入查询字符串,您需要转义所有内部 "
和 $
。这是工作查询:
curl -u uname:password -X POST -k https://artifactory.xxxx.com/artifactory/api/search/aql -d "items.find({\"type\" : \"file\",\"$or\":[{\"repo\" : {\"$match\" : \"war*\"}, \"repo\" : {\"$match\" : \"web*\"} }]}).include(\"name\",\"repo\",\"path\",\"size\").sort({\"$desc\": [\"size\"]}).limit(10)"
现在,这就是地狱。相反,考虑将查询写入文本文件并使用 -d @filename.aql
传递。在这种情况下,您不需要所有转义,查询将如下所示:
items.find({
"type" : "file",
"$or":[{
"repo" : {"$match" : "war*"},
"repo" : {"$match" : "web*"} }]})
.include("name","repo","path","size")
.sort({"$desc": ["size"]})
.limit(10)
这对我也有效。您可以按照@JBaruch 指定的方式编写命令,也可以运行 JSON AQL 文件。
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: application/json" -d @filename.aql
对我来说,当我使用 Content-Type text/plain 而不是 application/json 时它起作用了,即
curl -u uname -X POST http://host:8081/artifactory/api/search/aql -H "content-type: text/plain" -d @filename.aql