web-dev-qa-db-ja.com

どのユーザーがJenkins-Pipeline入力ステップに回答したかを知る方法は?

SVNマージを実行する可能性をテストし、マージをコミットする許可をユーザーに求めるJenkinsfileスクリプトがあります。

コミットメッセージに書き込むために、「入力」ステップに応答するユーザー名を知りたいのですが。

これは可能ですか?

これは、仮想的に私がやりたいことです。

outcome = input message: 'Merge trunk into branch?', ok: 'Merge'
echo "User that allowed merge: ${outcome.user}"
12

inputステップにはオプションの submitterParameter があり、入力ダイアログを送信するユーザーを含む、返されたMapのキーを指定できます。 :

指定した場合、これは、この入力を承認するユーザーのIDを含む戻り値の名前です。
戻り値は、parameters値と同様の方法で処理されます。
タイプ:文字列

これは次のようになります。

def feedback = input(submitterParameter: 'submitter', ...)
echo "It was ${feedback.submitter} who submitted the dialog."

追伸:ダイアログへのポジティブフィードバックとネガティブフィードバックの両方(およびタイムアウト)のためにユーザーを返す本格的なコードスニペットに興味がある場合は、 パイプラインライブラリ を指定してください。

16
StephenKing

ソースコード :に記載されているように、現時点ではエントリパラメータのみがinput step回答で返されます。

// TODO: perhaps we should return a different object to allow the workflow to look up
// who approved it, etc?
switch (mapResult.size()) {
case 0:
    return null;    // no value if there's no parameter
case 1:
    return mapResult.values().iterator().next();
default:
    return mapResult;
}

ただし、入力ステップを承認できるユーザーを制限する場合は、submitterパラメーターを使用できます。 :

input message: 'Approve ?', submitter: 'authorized-submitter'

[〜#〜]編集[〜#〜]

2017年1月以降、追加のパラメータの送信をリクエストできるようになりました。上記の StephenKingの回答 を参照してください。

3
Pom12

入力にパラメータを要求していない場合は、submitterParameterの種類を追加すると機能します。戻りオブジェクトのパラメーターとして追加しませんでした。代わりに、返されたオブジェクトをユーザー名を含む文字列に変換しました。

def feedback = input(submitterParameter: 'submitter')
echo "It was ${feedback} who submitted the dialog."
2
Kieran

groovy-sandboxをオフにすると、例外に対してこれを行うことができます。

try {
 'Deploy to production?'

 node {
  sh 'echo deploying'
  }
} catch(e) {
  def user = e.getCauses()[0].getUser()
   echo "Production deployment aborted by:\n ${user}"
}
1
Tarjei Huse