2017-10-19 153 views
0

我想通過使用Jenkins管道腳本上傳一些二進制文件到Artifactory。 我使用了Artifactory documentation的相同示例,但它不起作用。 我有以下錯誤:Artifactory - 使用Jenkins管道腳本上傳

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.upload() is applicable for argument types: (java.lang.String) values: [{ 
       "files": [ 
         .... 

還有另外一個類似question,但沒有任何反應......

pipeline { 
    agent any 
    environment { 
     def server = Artifactory.server 'art-1' 
     def uploadSpec = """{ 
       "files": [ 
       { 
        "pattern": "path/", 
        "target": "path/" 
       } 
      ] 
      }""" 

    } 
    stages { 
     stage('upload') { 
      steps { 
       script { server.upload(uploadSpec) } 

      } 
     } 
    } 
} 

Artifactory的5.4.6

回答

1

您沒有使用管道聲明完全正確。環境部分不能像那樣工作。你只能在那裏定義字符串,我會認爲def會拋出一個錯誤,但顯然不是。

您很可能以server等於對Artifactory.server對象的引用的String表示形式結束。基本上Artifactory.server.toString()。

試試這個:

pipeline { 
    agent any 

    stages { 
     stage('upload') { 
      steps { 
       script { 
       def server = Artifactory.server 'art-1' 
       def uploadSpec = """{ 
        "files": [{ 
         "pattern": "path/", 
         "target": "path/" 
        }] 
       }""" 

       server.upload(uploadSpec) 
       } 
      } 
     } 
    } 
}