需求
Jenkins我們已經內建了sonarqube,并且通過sonarqube的gate能擷取到結果,并且告知Jenkins是成功還是失敗。但是這樣還不夠,我們需要限制隊友向主分支送出代碼。我們鎖住了master分支,隊友隻能通過在gitea中向master分支送出pull-request并且通過了sonarqube的代碼品質檢查,我們才允許合并進主分支。我們急需要一個評論功能,告知我們,這次的合并請求是否允許合并
最終效果圖
Jenkins根據pipeline的運作結果,給gitea的合并請求pull-request進行評論需求最終效果圖關鍵點 關鍵點

1.在gitea中建立一個使用者,用這個使用者專門進行評論,例如我這裡的“guardian”賬戶
2.把該賬戶加入Jenkins的憑據管理裡。如下圖:
3.在gitea的官方文檔裡找到添加評論的API,連結如下:
https://try.gitea.io/api/swagger#/issue/issueCreateComment4.在Jenkins的pipeline中定義添加評論的方法,并且分别放在success和unsuccessful結果裡。如下:
//這一段是添加評論的方法
def gitComment(String comment) {
script {
if (IS_PULL_REQUEST==true){
numb=env.BRANCH_NAME.split('-')[-1];
def check_result = '{"body": "'+comment+'"}';
def response = httpRequest httpMode: 'POST',
url: 'https://{伺服器位址}/git/api/v1/repos/{所屬人}/{倉庫名}/issues/'+numb+'/comments',
authentication : '74849b03-79ba-43f5-b4b6-920',
acceptType: 'APPLICATION_JSON_UTF8', contentType: 'APPLICATION_JSON_UTF8',
requestBody : check_result
}
}
}
//根據執行結果,進行不同的評論
post {
success {
gitComment("通過CI檢查,允許合并")
}
unsuccessful {
gitComment("沒有通過CI檢查,建議不要合并"+env.RUN_DISPLAY_URL)
}
}