2017-07-03 117 views
2

當構建被用戶中止時,是否有方法獲取用戶名? 最好使用jenkins管道代碼。Jenkins獲取中止構建的用戶

當構建由用戶中止,它記錄:

Aborted by <username> 

所以我希望它被存儲爲一個短期的變量。

用例:用戶名稍後用於通過電子郵件或其他消息方式通知用戶自己或其他用戶。

回答

0

不幸的是,目前似乎沒有其他解決方案,但是要調整Jenkin的代碼本身和解決方法。

生成後的行動可編輯的電子郵件通知觸發器添加觸發器中止發送到添加請求者→... Jenkins Mailer Plugin

發送電子郵件至誰發起了體型的使用者。

有沒有中止添加。

http://<jenkins>/job/<project name>/lastBuild/api/xml顯示:

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

但沒有信息誰或者中止構建。

解決方法可能是curl http://<jenkins>/job/<project name>/<build #>Post build task腳本和grep​​。

1

如果作業被中止,似乎InterruptedBuildAction對象被插入到構建動作列表中。該對象可用於檢索中止構建的用戶。我使用下面的函數在我Jenkinsfile:

@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

事實上,你可以使用REST API這些信息,只需要使用以下網址與適當的構建:

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

而且你應該能夠根據行動[原因]找到請求的信息,例如:

{ 
    "_class" : "jenkins.model.InterruptedBuildAction", 
    "causes" : [ 
     { 
      "_class" : "jenkins.model.CauseOfInterruption$UserInterruption", 
      "shortDescription" : "Aborted by some_user_name" 
     } 
     ] 
},