GitLab、Jenkins、Sonar集成,分支/代码合并事件触发代码规范检察
作者:互联网
代码质量检察
注意:
1、GitLab WebHooks触发功能,不支持触发本机的Jenkins,因此GitLab 和Jenkins不能部署在同一台机器上,否则不能使用此方式
2、Jenkins需要拉取代码,和构建项目,因此Jenkins部署的机器需要部署Maven、Git
3、此方式使用到了Sonar-Scanner环境进行扫描,因此Jenkins部署的机器需要部署Sonar-Scanner环境,不安装Sonar-Scanner环境也行,取消环境依赖,用Mvn指令进行扫描,不过要依赖sonar-maven的一些插件包。(内网环境不建议此方式,插件包太多了,难找,安装Sonar-Scanner便捷多了)
1. 前置环境准备
GitLab,Sonar,Sonar-Scanner,Jenkins的安装部署这里不做过多赘述,参考之前的博客。
Git,Maven部署:https://blog.csdn.net/loney_wolf/article/details/122720910?spm=1001.2014.3001.5501
Sonar,Sonar-Scanner部署:https://blog.csdn.net/loney_wolf/article/details/122719822?spm=1001.2014.3001.5501
Jenkins部署:https://blog.csdn.net/loney_wolf/article/details/122719103?spm=1001.2014.3001.5501
GitLab部署:https://blog.csdn.net/loney_wolf/article/details/122714429?spm=1001.2014.3001.5501
2. Jenkins插件安装
GitLab相关插件安装: Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、GitParamete 、SonarQube Scanner for Jenkins
插件安装好之后,进入Jenkins 系统配置,找到GitLab Merge Request Builder部分,进行全局信息配置。Jnekins相关用户名,API token都是GitLab的,图二获取GitLab用户访问的API-Token,最好是管理员角色(拥有所有项目的访问权限),不然配置一个项目要生成一个API-Token难管理。
3. Jenkins全局变量配置
Dashboard>>凭据管理
新增一个全局凭证,账号密码形式,用以访问GitLab项目工程
Dashboard>> 全局工具配置
配置JDK环境
Dashboard>> 全局工具配置
Maven配置
Dashboard>> 全局工具配置
SonarQube servers配置
Dashboard>> 全局系统配置
SonarQube servers配置
凭据为Secret Text文本类型,Token来源为Sonar管理员账号访问token
4. Jenkins项目构建
构建一个maven项目,配置需要构建、检测的分支,这里取动态值。后续会配置触发时间,动态构建项目配置后,只能在GitLab进行触发,从Jenkins入口进行触发会报错,找不到目标分支。因为无触发事件,管道中的分支至是空的。
点击新增 选择Merge before build让其在构建之前,做一次分支合并测试(这里不会对GitLab进行实质合并),合并失败(不能合并)会直接结束。
注意这里Name of repository是必须配置参数,目前没找到动态参数。因此目标分支的remote源名称,必须是与这里保持一致。不然找不到合并的目标分支。当然这里也可以指定一个分支,但测试结果会变成合并请求分支与固定分支的合并测试。
*/${gitlabSourceBranch} 参数表示提交合并的,请求源分支 */ 表示是任意remote源别名
${gitlabTargetBranch} 参数表示合并的目标分支
配置构建触发器,这里表开启合并事件时进行构建触发。这个地址要记住,后续在GitLab配置Hooks事件需要
构建环境选soarqube scanner
提交步骤执行sonar扫描,并推送扫描结果至sonar指定项目
推送构建状态至GitLab,并在合并请求事件上新增扫描结果评论
Gitlab中,进入项目 设置>> webhooks 中新增一个webhook配置,选择合并请求事件。配置完成后,每次新增合并请求,都会请求到Jenkins,然后进行合并检查
配置的网址为:构建触发器时,选项后面的url
5. Sonar配置
Sonar安装sonar-gitlab-pluginSonar插件后,进入配置>>通用配置>>GitLab 配置,
配置 : GitLab仓库地址,GitLab User Token
User Token : 即为Git 个人账号访问令牌,配置管理员账号的token
6.效果展示
按照以上配置完毕后,提交一个分支合并请求。
Jenkins会创建一个构建任务,描述时来自GitLab的合并请求事件
合并请求界面在check完毕后会新增一条评论,点击可以直接跳转Jnekins检查任务页。
在Jenkins项目界面中,有sonar跳转链接,点击可以直接跳转至当前构建项目的sonar检查结果页。
代码check的结果也会在构建完毕后,推送到Sonar指定项目。效果如下图
标签:配置,代码,GitLab,合并,构建,Sonar,Jenkins 来源: https://blog.csdn.net/loney_wolf/article/details/122727451