需求
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) } }