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)
削除ステートメントにより、この例外が発生します
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スクリプトからアクセスできます。パスのアーティファクトを収集するGETは、同じデータを使用して正常に機能します。
Artifactory 2.6.4(無料バージョン!)、Groovy2.1.1とhttp-builder-0.6.jarを使用しています。
ご協力いただきありがとうございます!
フランク