广告投放申请入口迈步者seo
为了实现提交代码自动检测代码缺陷,本文介绍了一种将jenkins与gitlab集成的自动检测机制,如需应用于生产级开发流程,可在此基础上进行功能丰富和扩展,本文仅进行了原理性搭建。
一、基础环境准备
与sonar配合使用的jenkins和gitlab基础软件安装和部署不在本文写作范围之内,本文将假设已安装部署完毕,本文只涉及相关的设置及使用。下文涉及的sonar将基于docker搭建,关于dokcer安装部署不在本文介绍范围之内,本文将假设读者有docker基础。如需学习docker部署相关知识,见链接https://cloud.tencent.com/developer/article/1351621。
组件名 | 版本号 | |
---|---|---|
SonarQube | 6.7 | |
GitLab-Runner | 14.3.2 |
二、部署SonarQube
2.1 构建镜像
由于后续需要和gitlab集成,本文中基于6.7版本和 sonar-gitlab-plugin-3.0.2.jar 构建新的 SonarQube 镜像。
在服务创建一个sonar目录,在目录下创建Dockerfile文件,将jar包放到Dockerfile同级目录下,编辑Dockerfile文件为以下内容:
FROM sonarqube:6.7
ADD sonar-gitlab-plugin-3.0.2.jar /opt/sonarqube/extensions/plugins/
编辑完毕后,执行以下命令
docker build -t sonarqube:gitlab_1.0 .
执行命令后, docker images 查看新生成的镜像:
在终端中运行docker命令,使用sonarqube镜像运行容器,
docker run \-d \-p 9000:9000 \sonarqube:gitlab_2.0
使用 docker ps -a 查看是否部署成功,如下图显示则部署成功,访问 http://*******:9000 地址,等待出现下面界面。点击“log in”,并使用默认用户和密码 admin / admin登录。
登录成功后,按下图生成访问token。
三、集成gitlab实现代码自动检测
3.1 GitLab 用户令牌生成
在此处输入令牌名称,勾选 api 、read_user,生成的令牌需要马上保存,后续不再显示,
3.2 GitLab Runner 安装
GitLab Runner 是一个处理构建的应用程序,我们需要通过它执行我们在 GitLab CI 中定义的 Job,由于后续编写的 Job 依赖于 Maven 环境,因此选择直接在宿主机上安装 GitLab,
下载安装源:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
使用yum安装
yum install gitlab-runner
安装成功后,进行gitlab-runner注册。
完成注册后,即可在刚刚的地址中看见该 Runner 的信息:
gitlab-runner register \--non-interactive \--url "http://gitlab.fingard.cn/" \--registration-token "sRm8sLqrrCSj_aR3aUZC" \--executor "shell" \--description "runner" \--tag "tag1" \--locked="false" \
参数说明:
- url :gitlab地址
- registration-token: 注册令牌
- executor :(ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell),执行类型,可根据实际需求进行选择,一般选择shell即可。
- description : gitlab-runner的描述
- tag : 与后续编写的 .gitlab-ci.yml 中的 tags 要一致,因此需要慎重填写
3.3 集成 GitLab-CI
进入项目后,根据如图所示进行配置:
.gitlab-ci.yml 配置文件内容如下:
mage: maven:3.6.3-jdk-8variables:SONAR_TOKEN: "${sonar_token}"
# SONAR_TOKEN: "2c49ac76adf45494c22dffdf3bde025e531a9868"SONAR_HOST_URL: "http://10.60.45.170:9000"GIT_DEPTH: 0
stages:- build_push- feedback_to_gitlab#执行 SonarQube 分析,并将检测结果推送至 SonarQube
sonarqube_analysis:stage: build_push
# only:
# - merge_requests
# - masterexcept:- masterscript:- mvn --batch-mode compile sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKENtags:- tag1
3.4 提交验证
在本地idea代码分支提交push后,触发job执行:
登录sonar页面进行代码检测结果查看:
到此为止,gitlab集成sonar进行代码自动检测配置完毕,目前存在的问题是每个项目需要独立注册专属gitlab-runner,共享型的目前存在技术问题还未解决,后续会进行补充。
3.5 问题解决
参考文档:
https://blog.csdn.net/qq_42013035/article/details/107582310
https://blog.csdn.net/weixin_34248258/article/details/92443860
checkstyle插件安装
https://github.com/checkstyle/sonar-checkstyle/releases
参数说明
https://juejin.cn/post/6971013569986953223