Jenkins根据pipeline的运行结果,给gitea的合并请求pull-request进行评论
需求
Jenkins我们已经集成了sonarqube,并且通过sonarqube的gate能获取到结果,并且告知Jenkins是成功还是失败。但是这样还不够,我们需要限制队友向主分支提交代码。我们锁住了master分支,队友只能通过在gitea中向master分支提交pull-request并且通过了sonarqube的代码质量检查,我们才允许合并进主分支。我们急需要一个评论功能,告知我们,这次的合并请求是否允许合并
最终效果图
关键点
1.在gitea中创建一个用户,用这个用户专门进行评论,例如我这里的“guardian”账户
2.把该账户加入Jenkins的凭据管理里。如下图:
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)
}
}