Is it possible to capture the stdout from the sh DSL command in the pipeline Is it possible to capture the stdout from the sh DSL command in the pipeline jenkins jenkins

Is it possible to capture the stdout from the sh DSL command in the pipeline


Now, the sh step supports returning stdout by supplying the parameter returnStdout.

// These should all be performed at the point where you've// checked out your sources on the slave. A 'git' executable// must be available.// Most typical, if you're not cloning into a sub directorygitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()// short SHA, possibly better for chat notifications, etc.shortCommit = gitCommit.take(6)

See this example.


Note: The linked Jenkins issue has since been solved.

As mention in JENKINS-26133 it was not possible to get shell output as a variable. As a workaround suggested using of writ-read from temporary file. So, your example would have looked like:

sh "echo foo > result";def output=readFile('result').trim()echo "output=$output";


Try this:

def get_git_sha(git_dir='') {    dir(git_dir) {        return sh(returnStdout: true, script: 'git rev-parse HEAD').trim()    }}node(BUILD_NODE) {    ...    repo_SHA = get_git_sha('src/FooBar.git')    echo repo_SHA    ...}

Tested on:

  • Jenkins ver. 2.19.1
  • Pipeline 2.4