我在使用 JFrog CLI 递归地从 Artifactory 中提取文件夹时遇到问题
I am having an issue recursively pulling a folder from Artifactory using JFrog CLI
我正在使用 Artifactory 服务器。我正在尝试在我的存储库中存储第三方文件的文件夹。
我能够上传一个 zip 文件并将其分解,所以我的文件在 MY_REPO/MY_FOLDER/
我正在尝试使用递归方式下载文件夹的内容:
jfrog rt dl --recursive MY_REPO/MY_FOLDER
我启用了调试并得到:
[Info] Searching items to download...
[Debug] Searching Artifactory using AQL query:
items.find({"repo": "MY_REPO","path": {"$ne": "."},"$or": [{"$and":[{"path": {"$match": "MY_FOLDER"},"name": {"$match": "*"}}]},{"$and":[{"path": {"$match": "MY_FOLDER/*"},"name": {"$match": "*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
[Error] Artifactory response: 405 Method Not Allowed
{
"status": "failure",
"totals": {
"success": 0,
"failure": 0
}
}
[Error] Download finished with errors. Please review the logs
我尝试了 MY_FOLDER、MY_FOLDER/、[= 的变体74=]/.和with/without递归。我犯了同样的错误。
我知道我有权限,因为我可以上传文件:
jfrog rt u TEST_FILE MY_FOLDER
成功就好了。但是我不能转身把它拉下来:
jfrog rt dl MY_FOLDER/TEST_FILE
结果:
[Info] Searching items to download...
[Debug] Searching Artifactory using AQL query:
items.find({"repo": "MY_REPO","$or": [{"$and":[{"path": {"$match": "."},"name": {"$match": "MY_FILE"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
[Error] Artifactory response: 405 Method Not Allowed
{
"status": "failure",
"totals": {
"success": 0,
"failure": 0
}
}
[Error] Download finished with errors. Please review the logs
我不确定什么不起作用,Whosebug、JFrog dox 或其他地方都没有关于使用 jfrog cli 的问题。 :(
我的 jfrog-cli.conf 看起来像这样:
{
"artifactory": [
{
"url": "https://SITE_NAME:PORT_NUM/artifactory/list/MY_REPO/",
"user": "USERNAME",
"serverId": "MY_REPO",
"isDefault": true,
"apiKey": "API_KEY_FROM_ARTIFACTORY"
}
],
"Version": "1"
}
已更新
我是 运行 64 位 Windows 版本 1.22.1。我现在在 Windows 64 位上使用 jfrog cli 版本 1.34.1。根据第一条评论,我更新到最新的二进制文件并尝试 运行 搜索,有和没有 MY_FOLDER:
jfrog rt s TEST_FILE
和
jfrog rt s MY_FOLDER/TEST_FILE
两者return相同的结果。我启用了 DEBUG 并且使用较新的二进制文件我实际上似乎得到 two 错误。较旧的二进制文件只报告了 405 错误。较新的报告 404(未找到),然后将错误报告为 405 方法不允许。
[Debug] Sending usage info...
[Info] Searching artifacts...
[Debug] Searching Artifactory using AQL query:
items.find({"$or":[{"$and":[{"repo":"TEST_FILE","path":{"$match":"*"},"name":{"$match":"*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","modified","created","property")
[Debug] Sending HTTP POST request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/search/aql
[Debug] Sending HTTP GET request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/system/version
[Debug] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "File not found."
}
]
}
[Error] Artifactory response: 405 Method Not Allowed
这仍然很奇怪,因为我正在寻找我刚刚上传的文件。我什至删除了上传的文件并重新上传以验证较新的 cli 仍然可以上传文件。我尝试使用通配符搜索来查找所有文件,但它 returned 出现了同样的错误。
我还可以使用 Artifactory Web 界面看到文件应该在的位置,然后下载文件并将其删除。所以 Artifactory 知道它在那里并且我可以访问它。 :-/
您配置中的url应该只包含Artifactory的基础url,即:"SITE_NAME:PORT_NUM/artifactory"
。
您应该在上传和下载命令中提供目录路径。
使用 ping 命令验证您的设置是否有效,然后继续进行。
顺便说一句:上传成功但下载失败的原因是巧合。上传命令仅使用上传 REST API 需要路径(您在配置中提供),但下载命令首先发送不需要路径的搜索请求,因此失败。
我正在使用 Artifactory 服务器。我正在尝试在我的存储库中存储第三方文件的文件夹。
我能够上传一个 zip 文件并将其分解,所以我的文件在 MY_REPO/MY_FOLDER/
我正在尝试使用递归方式下载文件夹的内容:
jfrog rt dl --recursive MY_REPO/MY_FOLDER
我启用了调试并得到:
[Info] Searching items to download...
[Debug] Searching Artifactory using AQL query:
items.find({"repo": "MY_REPO","path": {"$ne": "."},"$or": [{"$and":[{"path": {"$match": "MY_FOLDER"},"name": {"$match": "*"}}]},{"$and":[{"path": {"$match": "MY_FOLDER/*"},"name": {"$match": "*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
[Error] Artifactory response: 405 Method Not Allowed
{
"status": "failure",
"totals": {
"success": 0,
"failure": 0
}
}
[Error] Download finished with errors. Please review the logs
我尝试了 MY_FOLDER、MY_FOLDER/、[= 的变体74=]/.和with/without递归。我犯了同样的错误。
我知道我有权限,因为我可以上传文件:
jfrog rt u TEST_FILE MY_FOLDER
成功就好了。但是我不能转身把它拉下来:
jfrog rt dl MY_FOLDER/TEST_FILE
结果:
[Info] Searching items to download...
[Debug] Searching Artifactory using AQL query:
items.find({"repo": "MY_REPO","$or": [{"$and":[{"path": {"$match": "."},"name": {"$match": "MY_FILE"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","property")
[Error] Artifactory response: 405 Method Not Allowed
{
"status": "failure",
"totals": {
"success": 0,
"failure": 0
}
}
[Error] Download finished with errors. Please review the logs
我不确定什么不起作用,Whosebug、JFrog dox 或其他地方都没有关于使用 jfrog cli 的问题。 :(
我的 jfrog-cli.conf 看起来像这样:
{
"artifactory": [
{
"url": "https://SITE_NAME:PORT_NUM/artifactory/list/MY_REPO/",
"user": "USERNAME",
"serverId": "MY_REPO",
"isDefault": true,
"apiKey": "API_KEY_FROM_ARTIFACTORY"
}
],
"Version": "1"
}
已更新 我是 运行 64 位 Windows 版本 1.22.1。我现在在 Windows 64 位上使用 jfrog cli 版本 1.34.1。根据第一条评论,我更新到最新的二进制文件并尝试 运行 搜索,有和没有 MY_FOLDER:
jfrog rt s TEST_FILE
和
jfrog rt s MY_FOLDER/TEST_FILE
两者return相同的结果。我启用了 DEBUG 并且使用较新的二进制文件我实际上似乎得到 two 错误。较旧的二进制文件只报告了 405 错误。较新的报告 404(未找到),然后将错误报告为 405 方法不允许。
[Debug] Sending usage info...
[Info] Searching artifacts...
[Debug] Searching Artifactory using AQL query:
items.find({"$or":[{"$and":[{"repo":"TEST_FILE","path":{"$match":"*"},"name":{"$match":"*"}}]}]}).include("name","repo","path","actual_md5","actual_sha1","size","type","modified","created","property")
[Debug] Sending HTTP POST request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/search/aql
[Debug] Sending HTTP GET request to: https://SITE_NAME:8443/artifactory/list/MY_REPO/api/system/version
[Debug] Artifactory response: 404 Not Found
{
"errors": [
{
"status": 404,
"message": "File not found."
}
]
}
[Error] Artifactory response: 405 Method Not Allowed
这仍然很奇怪,因为我正在寻找我刚刚上传的文件。我什至删除了上传的文件并重新上传以验证较新的 cli 仍然可以上传文件。我尝试使用通配符搜索来查找所有文件,但它 returned 出现了同样的错误。
我还可以使用 Artifactory Web 界面看到文件应该在的位置,然后下载文件并将其删除。所以 Artifactory 知道它在那里并且我可以访问它。 :-/
您配置中的url应该只包含Artifactory的基础url,即:"SITE_NAME:PORT_NUM/artifactory"
。
您应该在上传和下载命令中提供目录路径。
使用 ping 命令验证您的设置是否有效,然后继续进行。
顺便说一句:上传成功但下载失败的原因是巧合。上传命令仅使用上传 REST API 需要路径(您在配置中提供),但下载命令首先发送不需要路径的搜索请求,因此失败。