其他分享
首页 > 其他分享> > GitLab、Jenkins、Sonar集成,分支/代码合并事件触发代码规范检察

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