0

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を使用しています。

ご協力いただきありがとうございます!

フランク

4

2 に答える 2

1

ユーザーにはおそらく削除権限がありません。あなたの応答は、クライアントの呼び出しが正しいことを示唆しています。

于 2013-02-26T15:45:51.337 に答える
0

問題は、「匿名アクセスを許可する」がオンになっていることでした。これをオフにすると、基本認証を使用できるようになります。

于 2013-03-13T14:49:47.287 に答える