Gitlab+Gitlab-runner+SonarQube+Sonar-scanner实现代码审查
1、软件环境要求:
gitlab:14.6.1
gitlab-runner:14.6.1
SonarQube:10.4.1
sonar-scanner:5.0.1.3006
java:1.8
node.js:16.20.2
说明:其中gitlab、gitlab-runner、sonar-scanner、node.js均部署在centos7.6上,SonarQube部署在win10专业版中,其中centos7中为java8环境,gitlab通过docker部署,win10中为java17环境(sonarqube版本要求)
2、软件部署
2.1、gitlab安装
通过docker安装
2.2、sonarqube安装
sonarQube通过解压后,修改sonar.properties文件,绑定pg数据库,如下所示:
sonar.jdbc.username=sonar #数据库用户名
sonar.jdbc.password=123456 #数据库登录密码
sonar.jdbc.url=jdbc:postgresql://ip/sonar?currentSchema=public #数据库连接参数ip,数据库名称(sonar)
之后执行/bin/windows-x86-64路径下的StartSonar.bat文件
启动成功后访问http://ip:9000
2.3、node.js安装
官网下载制定版本后,通过一下命令进行部署,如下:
tar -xvf node-v16.20.2-lin9ux-x64.tar.gz
mkdir -p /usr/local/nodejs
mv node-v14.15.4-linux-x64/* /usr/local/nodejs/
# 建立node软链接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
# 建立npm 软链接
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
# 验证是否成功
node -v
npm -v
2.4、gitlab-runner安装
可按照gitlab中【菜单】->【管理员】->【Runner】->【注册一个实例runner】->【显示runner安装和注册说明】中显示的内容进行安装。
说明:sudo gitlab-runner install --user=gitlab-runner...命令执行时可能会报错,可通过切换到gitlab-runner-linux-amd64文件所在目录下执行如下命令:
./gitlab-runner-linux-amd64 install --user=gitlab-runner...进行设置,即:./gitlab-runner-linux-amd64替代sudo gitlab-runner
2.5、sonar-scanner安装
下载指定版本sonar-scanner-cli-5.0.1.3006-linux.zip文件,执行以下命令:
unzip sonar-scanner-cli-5.0.1.3006-linux.zip -d /opt/
vim /opt/sonar-scanner-cli-5.0.1.3006-linux/conf/sonar-scanner.properties
sonar-scanner.properties配置参数如下:
sonar.host.url=https://ip:9000 # sonarqube 的url
sonar.login=admin # sonarqube 的用户名和密码
sonar.password=admin
sonar.sourceEncoding=UTF-8
sonar.token=**** #未来可能通过token进行验证
同时执行如下命令给sonar-scanner-cli-5.0.1.3006-linux授权:
chmod 777 -R /opt/sonar-scanner-cli-5.0.1.3006-linux
否则后期执行时报异常。
配置环境变量
新增文件 /etc/profile.d/sonar-scanner.sh,内容如下:
export PATH=$PATH:/opt/sonar-scanner-4.0.0.1744-linux/bin/sonar-scanner
之后执行命令:
source /etc/profile.d/sonar-scanner.sh
sonar-scanner -v #验证是否安装成功
显示如下即成功:
INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 3.10.0-693.el7.x86_64 amd64
3、Gitlab与SonarQube中的参数配置
3.1、Gitlab中Runner设置
根据【菜单】->【管理员】->【Runner】->【注册一个实例runner】->【显示runner安装和注册说明】中显示的注册runner的命令在gitlab-runner安装的服务器中进行执行,注册成功后Runner列表中显示该注册的runner信息。
3.2、SonarQube中集成gitlab
以管理员用户登录SonarQube系统,【配置】->【ALM集成】界面中选择【Gitlab】菜单页,点击【创建配置】按钮,输入配置名称、Gitlab网址、个人访问令牌等信息,点击【保存设置】按钮进行保存,点击【检查配置】验证是否通过。
说明:个人访问令牌可登录gitlab系统后,点击右上角用户名称下拉列表中的【编辑个人资料】->【访问令牌】进行获取,此处建议有gitlab管理员权限用户创建。
3.3、SonarQube与gitlab单点登录设置
以管理员用户登录gitlab,点击右上角用户名称下拉列表中的【编辑个人资料】->【应用】,输入新建应用名称为sonar、Redirect URI为http://sonarip:port/oauth2/callback/gitlab;范围中勾选api、read_user,点击【保存应用】按钮,将生成的id和密码分别输入到SonarQube系统【配置】->【Authentication】->【Gitlab】配置界面的Application ID和Secret中,并输入GitLab URL地址,点击【保存配置】按钮进行保存,保存成功后可通过【Test configuration】进行验证,并且选中下面【Provisioning】中的【Allowed user to sign up】。验证成功后退出SonarQube系统,再次登录时可看到登录界面显示【通过GitLab登录】提示,即实现gitlab与SonarQube的单点登录。
3.4、基于gitlab的SonarQube项目创建
SonarQube中点击【项目】->【新增项目】->【GitLab】,在此界面输入个人访问令牌(可根据此界面的生成令牌提示进行操作),显示本用户所拥有的项目信息,点击项目后的【导入】按钮,选择代码基线后,点击【创建1 projects】按钮即可,创建成功后项目列表显示该项目信息。
3.5、SonarQube项目配置分析器
对新建的项目,点击【配置分析器】文本链接,选择分析方法为“使用GitLab CI”,根据界面提示在GitLab中关联项目的【设置】->【CI/CD】->【变量】->【添加变量】,分别添加“SONAR_TOKEN”键、值为SonarQube界面生成的令牌,取消“保护变量”复选框,勾选“隐藏变量”复选框,点击【添加变量】按钮,同理根据界面提示添加"SONAR_HOST_URL"变量信息。之后根据界面提示信息选择构建技术,并将相关参数进行设置,其中生成的.gitlab-ci.yml文件内容可以拷贝到GitLab关联的项目【CI\CD】->【编译器】->【创建新的CI/CD流水线】的配置参数中,并进行保存。
说明:使用Maven或Gradle等需要安装相关环境,且与gitlab-runner保持在同一服务器中

浙公网安备 33010602011771号