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保持在同一服务器中

posted @ 2024-03-08 17:42  一点空白  阅读(298)  评论(0)    收藏  举报