2017-07-03 17 views
2

ビルドがユーザーによって中止されたときにユーザー名を取得する方法はありますか? 好ましくは、ジェンキンパイプラインコードを使用します。Jenkinsがビルドを中止したユーザーを取得する

ビルドがユーザーによって中止された場合、それが記録されます:

Aborted by <username> 

ので、私はそれは短い期間のための変数として格納されている願っています。

ユースケース:後でユーザー自身や他のユーザーに電子メールやその他のメッセージ手段で通知するために使用されるユーザー名。

答えて

0

は、残念ながら現時点では他の解決策はないようにしかしジェンキンのコード自体と回避策を微調整することがあるようです。

ビルド後アクション編集可能な電子メール通知トリガーのトリガーを追加中止送るを追加します。 リクエスタ→... Jenkins Mailer Plugin

はビルドを開始したユーザーに電子メールを送信します。

投稿者を追加してください。

http://<jenkins>/job/<project name>/lastBuild/api/xmlショー:

... 
<result>ABORTED</result> 
... 

が、いずれかのビルドを中止さ何ら情報がありません。

Post build taskスクリプトではcurl http://<jenkins>/job/<project name>/<build #>に、​​ではgrepに対処することができます。

1

ジョブが中止された場合InterruptedBuildActionオブジェクトはビルドアクションのリストに挿入されているようです。このオブジェクトを使用して、ビルドを中止したユーザーを取得できます。

/api/json?tree=actions[causes[*]]&pretty=true 

そして、あなたはできるはずです:あなただけの適切なビルドで、次のURLを使用して、REST APIで、この情報を持つことができます実際には

@NonCPS 
def getAbortUser() 
{ 
    def causee = '' 
    def actions = currentBuild.getRawBuild().getActions(jenkins.model.InterruptedBuildAction) 
    for (action in actions) { 
     def causes = action.getCauses() 

     // on cancellation, report who cancelled the build 
     for (cause in causes) { 
      causee = cause.getUser().getDisplayName() 
      cause = null 
     } 
     causes = null 
     action = null 
    } 
    actions = null 

    return causee 
} 
0

:私は私のJenkinsfileに次の関数を使用します

{ 
    "_class" : "jenkins.model.InterruptedBuildAction", 
    "causes" : [ 
     { 
      "_class" : "jenkins.model.CauseOfInterruption$UserInterruption", 
      "shortDescription" : "Aborted by some_user_name" 
     } 
     ] 
}, 
:アクション[原因]、例えば下に要求された情報を検索します
関連する問題