Я пытаюсь удалить артефакты из репозитория Artifactory, используя сценарий Groovy, который выполняется в задаче Jenkins. Сценарий собирает все артефакты по указанному пути моего репозитория, которые соответствуют метке времени, а затем пытается удалить их из репозитория.
Интересная часть скрипта выглядит так:
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)
Оператор удаления вызывает это исключение
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 вроде правильный - если я скопирую его из лога и вставлю в адресное поле своего браузера, артефакт скачается без проблем. Доступ к Artifactory можно получить из скрипта Groovy — GET, который собирает артефакты пути, отлично работает, используя те же данные.
Я использую Artifactory 2.6.4 (бесплатная версия!), Groovy 2.1.1 с http-builder-0.6.jar.
Спасибо за вашу помощь!
откровенный