Groovy 认证不';尝试删除工件时无法工作(“HttpResponseException:禁止”)

Groovy 认证不';尝试删除工件时无法工作(“HttpResponseException:禁止”),groovy,artifactory,Groovy,Artifactory,我正在尝试使用在Jenkins任务中运行的Groovy脚本从Artifactory存储库中删除工件。该脚本收集存储库给定路径中与时间戳匹配的所有工件,然后尝试从存储库中删除这些工件 脚本中有趣的部分如下所示: def base.url = 'http://name:port' def repo = 'my-repo' def path = 'my-path' def artifact = 'my-artifact' def url.to.delete = base.url + '/artifac

我正在尝试使用在Jenkins任务中运行的Groovy脚本从Artifactory存储库中删除工件。该脚本收集存储库给定路径中与时间戳匹配的所有工件,然后尝试从存储库中删除这些工件

脚本中有趣的部分如下所示:

def base.url = 'http://name:port'
def repo = 'my-repo'
def path = 'my-path'
def artifact = 'my-artifact'
def url.to.delete = base.url + '/artifactory/' + repo + '/' + path + '/' + artifact 
print "url.to.delete = " + url.to.delete

def server = new RESTClient(base.url)
server.auth.basic('user', 'password')   
def resp = server.delete(path: url.to.delete)
delete语句导致此异常

groovyx.net.http.HttpResponseException: Forbidden
    at groovyx.net.http.RESTClient.defaultFailureHandler(RESTClient.java:240)
    at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:508)
    at groovyx.net.http.RESTClient.delete(RESTClient.java:196)
    at groovyx.net.http.RESTClient$delete.call(Unknown Source)
    at Artifactory$_deleteartifactsWithTimestamps_closure2.doCall(hudson4086512083232103441.groovy:87)
    at Artifactory.deleteartifactsWithTimestamps(hudson4086512083232103441.groovy:80)
    at Artifactory$deleteartifactsWithTimestamps.callCurrent(Unknown Source)
    at Artifactory.deleteSnapshots(hudson4086512083232103441.groovy:32)
    at Artifactory$deleteSnapshots.call(Unknown Source)
    at hudson4086512083232103441.run(hudson4086512083232103441.groovy:170)
计算出的url.to.delete似乎是正确的-如果我从日志中复制它并将其粘贴到浏览器的地址字段中,则工件将顺利下载。可以从Groovy脚本访问Artifactory—收集路径工件的GET可以使用相同的数据正常工作

我使用Artifactory2.6.4(免费版本!)、Groovy2.1.1和http-builder-0.6.jar

谢谢你的帮助


Frank

您的用户可能没有删除权限。您的回答表明客户端呼叫是正确的。

问题是“允许匿名访问”已打开。关闭此选项后,可以使用基本身份验证。

谢谢您的回复。我确信,该用户具有管理员权限。我用它来创建和删除存储库。我使用用户名和密码(复制和粘贴)登录到Artifactory。关于Rick的回复,我使用脚本中使用的用户和密码登录到我的Artifactory,并毫无问题地删除了UI中的一个工件。因此,用户的权限适合删除工件。我只是查看了我发现的日志:“[DENIED DELETE]repo:path/my-artifact.war for anonymous/…”。因此,问题似乎不是权限,而是身份验证。我在脚本server.auth.basic('user','password')中使用的身份验证是否有问题?谢谢!