【问题标题】:Artifactory - Use Jenkins Pipeline script to uploadArtifactory - 使用 Jenkins Pipeline 脚本上传
【发布时间】:2017-10-19 15:02:05
【问题描述】:

我正在尝试使用 Jenkins Pipeline 脚本将一些二进制文件上传到 Artifactory。 我使用了 Artifactory documentation 中的相同示例,但它不起作用。 我有以下错误:

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) }

            }
        }
    } 
}

神器 5.4.6

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline artifactory


    【解决方案1】:

    您没有完全正确地使用声明式管道。环境部分不是那样工作的。您只能在其中定义字符串,我原以为def 会引发错误,但显然不会。

    您很可能最终得到server 等于对 Artifactory.server 对象的引用的字符串表示形式。基本上是 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) 
                   }
                }
            }
        } 
    }
    

    【讨论】:

      【解决方案2】:

      我遇到了一个问题,即我使用了正确的语法,但没有看到任何错误,但仍然没有看到上传的工件。而不是像这样的 Jenkins 日志:

      [Pipeline] { (upload)
      [Pipeline] script
      [Pipeline] {
      [Pipeline] bat
      [libraries_PR-1-WWJNY63HBCEAKKTFO6WL2V5LW] Running batch script
      [Pipeline] getArtifactoryServer
      [Pipeline] newBuildInfo
      [Pipeline] artifactoryUpload
      [consumer_0] Deploying artifact: https://my.artifactory.net/path/
      [Pipeline] }
      

      我看到了:

      [Pipeline] { (upload)
      [Pipeline] script
      [Pipeline] {
      [Pipeline] bat
      [libraries_PR-1-WWJNY63HBCEAKKTFO6WL2V5LW] Running batch script
      [Pipeline] getArtifactoryServer
      [Pipeline] newBuildInfo
      [Pipeline] artifactoryUpload
      [Pipeline] }
      

      这是因为我的路径没有正确指定,所以没有匹配的文件。更改路径后一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多