21

stdoutJenkins 2.0 パイプラインでシェル タスクを実行し、コマンドの を返すより良い方法はありますか。これを機能させる唯一の方法は、コマンドの出力をファイルにパイプしてから、ファイルを変数に読み込むことです。

sh('git config --get remote.origin.url > GIT_URL')
def stdout = readFile('GIT_URL').trim()

これは、出力を返すには本当に悪い方法のようです。私は次のようなことができることを望んでいました:

def stdout = sh('git config --get remote.origin.url').stdout

また

def exitcode = sh('git config --get remote.origin.url').exitcode

これは可能ですか?

4

2 に答える 2

22

はい、luka5zが述べたように、Pipeline Nodes and Processes Plugin のバージョン 2.4 は、この種のものをサポートするようになりました:

def stdout = sh(script: 'git config --get remote.origin.url', returnStdout: true)
println stdout

def retstat = sh(script: 'git config --get remote.origin.url', returnStatus: true)
println retstat

同じスクリプトで両方を返そうとすると、returnStatus が returnStdout を上書きしてしまい、少し残念です。

詳細については、こちらの公式ドキュメントを参照してください

編集:さらに、失敗した/不安定なビルドステータスをより細かく制御することもできます。ここの私のコメントで例を見ることができます

于 2016-08-19T15:18:48.570 に答える