首页 > 解决方案 > 将 shell 输出传递给 groovy 变量

问题描述

我尝试将 shell 脚本的输出传递给 groovy 脚本:

job {
  steps {
    systemGroovyCommand ("""
...
def parseJiraIssue() {
    def process = '/bin/bash -x -c source \$JENKINS_HOME/jira.sh && jira_get_info \$ISSUE'.execute()
    process.waitFor()
    def result = process.text
    println("Output: " + result)
    return result
}
String info=parseJiraIssue()
"""
    )
  }
}

但我得到空的结果。一切都很好,有:

job {
  steps {
    shell(''' source \$JENKINS_HOME/jira.sh && jira_get_info \$ISSUE ''')
  }
}

但通过这种方式,我无法将我的 shell 输出传递给 groovy 变量。我也试过:

def parseJiraIssue() {
    def sout = new StringBuilder(), serr = new StringBuilder()
    def process = '/bin/bash -x -c source \$JENKINS_HOME/jira.sh && jira_get_info \$ISSUE'.execute()
    process.consumeProcessOutput(sout, serr)
    process.waitFor()
    println("Output:" +  sout + ", \nERROR:" +  serr)

但同样的结果。我得到输出和错误空

标签: groovyjenkins-job-dsl

解决方案


推荐阅读