【问题标题】:Error while trying to capture artifacts in Jenkins尝试在 Jenkins 中捕获工件时出错
【发布时间】:2018-08-03 17:08:45
【问题描述】:

我的任务是在 Jenkins 构建的构建过程中捕获工件。这是一个多阶段的管道,作为最后一个阶段,我添加了一个有望实现这一目标的阶段。我对 Jenkins 还很陌生,所以对于更多高级用户来说,这可能是一个明显的错误/错误。

stage('collect and upload kickstart artifact') {
  steps {
    def server = Artifactory.server SERVER_ID

    def uploadSpec = """{
      "files": [
        {
           "pattern": "ks/*.cfg",
           "target": "bin-local-cei/ks/"
        },
      ]
    }"""
    server.upload(uploadSpec)

    def buildInfo = Artifactory.newBuildInfo()
    buildInfo.env.capture = true
    buildInfo.env.collect()
    buildInfo=server.upload(uploadSpec)
    server.publishBuildInfo(buildInfo)
  }
}

我收到以下错误 ...

WorkflowScript: 117: Expected a step @ line 117, column 9.
           def server = Artifactory.server SERVER_ID
           ^

WorkflowScript: 119: Expected a step @ line 119, column 9.
           def uploadSpec = """{
           ^

WorkflowScript: 127: Method calls on objects not allowed outside "script" blocks. @ line 127, column 9.
           server.upload(uploadSpec)
           ^

WorkflowScript: 129: Expected a step @ line 129, column 9.
           def buildInfo = Artifactory.newBuildInfo()
           ^

WorkflowScript: 130: Expected a step @ line 130, column 9.
           buildInfo.env.capture = true
           ^

WorkflowScript: 131: Expected a symbol @ line 131, column 9.
           buildInfo.env.collect()
           ^

WorkflowScript: 132: Expected a step @ line 132, column 9.
           buildInfo=server.upload(uploadSpec)
           ^

WorkflowScript: 133: Method calls on objects not allowed outside "script" blocks. @ line 133, column 9.
           server.publishBuildInfo(buildInfo)
           ^

WorkflowScript: 131: Missing required parameter: "message" @ line 131, column 9.
           buildInfo.env.collect()
           ^

9 个错误

我浏览了博客、帖子和文章,但我在这里遗漏了一些东西。任何援助将不胜感激。谢谢!

【问题讨论】:

    标签: jenkins build devops


    【解决方案1】:

    您需要添加一些定义,例如 nodescript 我只是不确定Artifactory 是否可以工作,因为我没有安装这个插件。

    #!/usr/bin/env groovy
    
    pipeline {
      agent none
      stages {
        stage('collect and upload kickstart artifact') {
          steps {
            node('master') {
              script {
                def server = Artifactory.server SERVER_ID
    
                def uploadSpec = """{
                  "files": [
                    {
                       "pattern": "ks/*.cfg",
                       "target": "bin-local-cei/ks/"
                    },
                  ]
                }"""
                server.upload(uploadSpec)
    
                def buildInfo = Artifactory.newBuildInfo()
                buildInfo.env.capture = true
                buildInfo.env.collect()
                buildInfo=server.upload(uploadSpec)
                server.publishBuildInfo(buildInfo)
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • cpanato,谢谢。我在 Jenkinsfile 的开头有一个代理块,代理 { node { label 'packer' } } 我还没有尝试过节点以及脚本块,但如果你认为它可能有帮助,我可以这样做!
    • 因为代理块已经在 J​​enkinsfile 的开头定义了节点信息,所以我像上面一样添加了脚本块,但是就在“steps {”下面,这很有效!我遇到了另一个问题,涉及文件夹位置以及它已经存在的事实。我现在正在调查。
    猜你喜欢
    • 2014-02-02
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多