jenkins - Artifactory - 使用 Jenkins Pipeline 脚本上传

标签 jenkins groovy jenkins-pipeline artifactory

我正在尝试使用 Jenkins 管道脚本将一些二进制文件上传到 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

最佳答案

您没有正确使用声明性管道。环境部分不是那样工作的。你只能在那里定义字符串,我原以为 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) 
               }
            }
        }
    } 
}

关于jenkins - Artifactory - 使用 Jenkins Pipeline 脚本上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46832989/

相关文章:

Jenkins - 如何列出另一个项目的成功构建的构建选择

ajax - Grails formRemote重定向而不是仅调用方法

gradle - 将凭证放在哪里

git - 在多个分支中处理对 Jenkinsfile 的常见更新

docker - 使用 Jenkins 管道构建 Docker 镜像时如何解决 "Cannot retrieve .Id from docker"

jenkins - 并行运行 Jenkins 构建步骤

Jenkins - 主从设置问题

ruby-on-rails - 未定义的方法 `path_separator' 用于 Gem :Module

java - 如何在隔离的类加载器中执行 groovy 脚本?

git - 检查管道中的git是否有变化