使用 JFrog CLI 删除工件会给出“200 OK”,但不会删除工件
Deleting artifacts with JFrog CLI gives "200 OK", but artifacts are not deleted
我创建了一个 AQL,它为我提供了一些我想从 Artifactory 中删除的工件。我可以 运行 带有 jfrog-cli 的搜索命令,并获得正确的工件列表:
jfrog rt s --spec search-aql.json
当我尝试使用相同的 AQL 删除相同的工件时,一切似乎都很好:
- 工件已列出
- 我问是否要删除它们。
- 我回答是,命令继续记录每个项目的删除。
每个项目似乎都被返回并打印到我的控制台,然后是这条消息:
[Error] Artifactory response: 200 OK
二进制文件也打印到控制台,所以控制台输出真的很乱。
最后总结一下:
{
"status": "failure",
"totals": {
"success": 0,
"failure": 68
}
}
[Error] Artifactory response: 200 OK
对于同一个用户,我可以使用 REST API 删除单个工件,因此该用户确实具有执行删除的必要权限。
我使用的是 JFrog CLI 1.38.2 版和 Artifactory 7.2.1 版。
任何人都可以帮助我了解哪里出了问题或如何调试这个问题吗?
2020/08/06 更新:
当按照@Prostagma 的建议将日志级别设置为调试时,我为每个工件获得了两行额外的日志记录。以下是两个工件的日志记录示例:
[Info] [Thread 1] Deleting <path>/<artifact>.jar.sha512
[Debug] Sending HTTP DELETE request to: https://repo.enonic.com/<path>/<artifact>.jar.sha512
[Error] Artifactory response: 200 OK
<sha512 hash>
[Info] [Thread 0] Deleting <path>/<artifact>.jar
[Debug] Sending HTTP DELETE request to: https://repo.enonic.com/<path>/<artifact>.jar
[Error] Artifactory response: 200 OK
<binary contents of <artifact>.jar
更详细的回答以后谁遇到这个问题-
通过深入研究代码,我们可以看到 CLI 期望在删除后从 Artifactory 获得状态 204:
https://github.com/jfrog/jfrog-client-go/blob/v0.12.0/artifactory/services/delete.go#L110
在某些安装中,可能有代理更改响应代码,例如当 Artifactory returns 204 时,它可能会将状态代码更改为 200。
请确保您的代理不会更改从 Artifactory 返回的状态代码。
我创建了一个 AQL,它为我提供了一些我想从 Artifactory 中删除的工件。我可以 运行 带有 jfrog-cli 的搜索命令,并获得正确的工件列表:
jfrog rt s --spec search-aql.json
当我尝试使用相同的 AQL 删除相同的工件时,一切似乎都很好:
- 工件已列出
- 我问是否要删除它们。
- 我回答是,命令继续记录每个项目的删除。
每个项目似乎都被返回并打印到我的控制台,然后是这条消息:
[Error] Artifactory response: 200 OK
二进制文件也打印到控制台,所以控制台输出真的很乱。
最后总结一下:
{
"status": "failure",
"totals": {
"success": 0,
"failure": 68
}
}
[Error] Artifactory response: 200 OK
对于同一个用户,我可以使用 REST API 删除单个工件,因此该用户确实具有执行删除的必要权限。
我使用的是 JFrog CLI 1.38.2 版和 Artifactory 7.2.1 版。
任何人都可以帮助我了解哪里出了问题或如何调试这个问题吗?
2020/08/06 更新: 当按照@Prostagma 的建议将日志级别设置为调试时,我为每个工件获得了两行额外的日志记录。以下是两个工件的日志记录示例:
[Info] [Thread 1] Deleting <path>/<artifact>.jar.sha512
[Debug] Sending HTTP DELETE request to: https://repo.enonic.com/<path>/<artifact>.jar.sha512
[Error] Artifactory response: 200 OK
<sha512 hash>
[Info] [Thread 0] Deleting <path>/<artifact>.jar
[Debug] Sending HTTP DELETE request to: https://repo.enonic.com/<path>/<artifact>.jar
[Error] Artifactory response: 200 OK
<binary contents of <artifact>.jar
更详细的回答以后谁遇到这个问题-
通过深入研究代码,我们可以看到 CLI 期望在删除后从 Artifactory 获得状态 204: https://github.com/jfrog/jfrog-client-go/blob/v0.12.0/artifactory/services/delete.go#L110
在某些安装中,可能有代理更改响应代码,例如当 Artifactory returns 204 时,它可能会将状态代码更改为 200。
请确保您的代理不会更改从 Artifactory 返回的状态代码。