使用 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 返回的状态代码。