我正在尝试使用在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可以正常工作。
我使用Artifactory 2.6.4(免费版!),Groovy 2.1.1和http-builder-0.6.jar。
感谢您的帮助!
谢
答案 0 :(得分:1)
您的用户可能没有删除权限。您的回复表明客户来电是正确的。
答案 1 :(得分:0)
问题是“允许匿名访问”已打开。关闭此功能后,可以使用基本身份验证。