天天看點

Jenkins根據pipeline的運作結果,給gitea的合并請求pull-request進行評論需求最終效果圖關鍵點

需求

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

最終效果圖
Jenkins根據pipeline的運作結果,給gitea的合并請求pull-request進行評論需求最終效果圖關鍵點
關鍵點

1.在gitea中建立一個使用者,用這個使用者專門進行評論,例如我這裡的“guardian”賬戶

2.把該賬戶加入Jenkins的憑據管理裡。如下圖:

Jenkins根據pipeline的運作結果,給gitea的合并請求pull-request進行評論需求最終效果圖關鍵點

3.在gitea的官方文檔裡找到添加評論的API,連結如下:

https://try.gitea.io/api/swagger#/issue/issueCreateComment

4.在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)
        }
    }      

繼續閱讀