记录一次SonarQube集成GitLab的过程

【详细介绍】 SonarQube集成GitLab

1、基础服务安装

SonarQube是一种自动代码审查工具,可以在持续集成中使用,此文档记录一次SonarQube集成GitLab的过程

​ 安装环境:Docker 20.10.12

​ GitLab版本:gitlab-ce 12.10.0-ce.0

​ GitLab-Runner版本:15.0.0

​ SonarQube版本:sonarqube:8.8-community

​ Sonar-Scanner版本:sonar-scanner-4.2.0.1873-linux

​ PostgreSQL版本:PostgreSQL-14版本

GitLab192.168.3.9
GitLab-Runner192.168.3.9
SonarQube-Server192.168.3.235:9000
Sonar-Scanner192.168.3.9
PostgreSQL192.168.3.235:5432
  • ​ PostgreSQL数据库安装
# 采用Docker安装方式安装
[qworld@localhost ~]$ docker pull postgres

[qworld@localhost ~]$ mkdir /opt/data/

[qworld@localhost ~]$ docker run -d -p 5432:5432 -v /opt/data/postgres:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -e ALLOW_IP_RANGE=0.0.0.0/0 --name postgres postgres

# 参数说明:
POSTGRES_PASSWORD 是数据库初始密码
ALLOW_IP_RANGE=0.0.0.0/0 允许任何主机访问

[zsj@localhost ~]$ docker exec -it postgresql bash

# 使用默认用户postgres创建SonarQube数据库
root@0f997b196687:/# su postgres

root@0f997b196687:/# psql

root@0f997b196687:/# create database sonar;

root@0f997b196687:/# exit

root@0f997b196687:/# exit
  • ​ 部署SonarQube
# 设置环境依赖
[qworld@localhost ~]$ vim /etc/sysctl.conf
# 尾添加如下两行
vm.max_map_count = 262144
fs.file-max = 65536

[qworld@localhost ~]$ sysctl -p

[qworld@localhost ~]$ vi /etc/security/limits.conf

[qworld@localhost ~]$ 
# 尾添加如下内容:
*    soft    nofile    65536
*    hard    nofile    65536
# reboot重启生效

[qworld@localhost ~]$ docker pull sonarqube:8.8-community

# 创建卷挂载数据,也可以直接创建目录挂载数据
[qworld@localhost ~]$ docker volume create --name sonarqube_data

[qworld@localhost ~]$ docker volume create --name sonarqube_logs

[qworld@localhost ~]$ docker volume create --name sonarqube_extensions

[qworld@localhost ~]$ docker volume create --name sonarqube_conf

[qworld@localhost ~]$ docker run -d --name sonarqube \
    -p 9000:9000 \
    -e SONAR_JDBC_URL=jdbc:postgresql://192.168.3.235:5432/sonar \
    -e SONAR_JDBC_USERNAME=postgres \
    -e SONAR_JDBC_PASSWORD=123456 \
    -v sonarqube_data:/opt/sonarqube/data \
    -v sonarqube_extensions:/opt/sonarqube/extensions \
    -v sonarqube_logs:/opt/sonarqube/logs \
    -v sonarqube_conf:/opt/sonarqube/conf \
    sonarqube:8.8-community

浏览器访问http://192.168.3.235:9090 使用默认账号(admin)密码(admin)登录,根据提示修改密码

2、配置SonarQube

# 访问http://192.168.3.9 登录Gitlab*,必须登录具有管理员权限的账号*

  • gitlab生成访问令牌

    ​ 右上角点击头像,选择设置,然后点击访问令牌,在令牌名称处的输入框中填写一个随机的名称,然后在下方权限选择分别勾选api、read_api、read_user、read_repository,点击确定之后,会显示您的新个人访问令牌,复制这一长串字符串记录i下来,此令牌只显示一次;

  • SonarQube配置地址

​ 进入到SonarQube页面,在上方菜单栏找到配置,然后左侧找到通用,在Server base URL中填写服务端的IP地址

http://192.168.3.235:9000/ >>> SonarQube服务地址

​ 然后依旧在配置页面中,点击ALM集成,找到GitLab,点击创建配置,填写相应的GitLab网址与访问令牌

---
配置名称:	SonarQube  						 (自定义)
GitLab网址:	http://192.168.3.9/api/v4	  (IP地址/api/v4)
个人访问令牌:	 f1437e64de4a165ce360710aaf3081125460a358 (上文创建的gitlab令牌)                

​ 之后点击保存配置会看到绿色的标签,显示配置正确

3、SonarQube集成到GitLab
  • ​ 首先在SonarQube中上方的选项栏中点击项目,然后在主页面选择来自GitLab,需要输入上文生成的GitLab访问令牌,成功之后,可以看到GitLab仓库的所有项目代码,需要配置哪个项目就点击哪个项目,然后点击后方的设置,便成功关联到了GitLab具体的项目;

  • ​ 注册Runner来运行测试流水线

# 在安装runner的机器上执行此命令
root@0f997b196687:/# gitlab-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
输入Gitlab网址
Please enter the gitlab-ci token for this runner:
输入Gitlab Runner配置页中具体的令牌
Please enter the gitlab-ci description for this runner:
描述
Please enter the gitlab-ci tags for this runner (comma separated):
标签
Whether to run untagged build [true/false]:
回车跳过
Please enter the executor: docker-ssh+machine, docker-ssh, parallers, shell, ssh, virtualbox, docker, docker+machine, kubernetes:
shell
# 到此在GitLab Runner页面刷新即可看到新的Runner
  • 安装Runner Scanner

    ​ Scanner下载地址: (https://link.juejin.cn/?target=https%3A%2F%2Fdocs.sonarqube.org%2Flatest%2Fanalysis%2Fscan%2Fsonarscanner%2F)

# 如果 gitlab runner 执行器为 shell, 在 runner 所在服务器安装
# 如果 gitlab runner 之行为为 docker, 基于 maven 镜像安装

root@0f997b196687:/# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip

root@0f997b196687:/# apt-get update && apt-get install vim unzip

root@0f997b196687:/# unzip sonar-scanner-cli-4.2.0.1873-linux.zip

root@0f997b196687:/# mv sonar-scanner-cli-4.2.0.1873-linux /user/local

root@0f997b196687:/# vim /etc/profile
# 加入以下内容
export SONAR_HOME=/usr/local/sonar-scanner-4.6.2.2472-linux
export PATH=$PATH:$SONAR_HOME/bin

root@0f997b196687:/# source /etc/profile

在SontarQube生成令牌,右上角账号 >> 我的账号 >> 安全 >> 生成令牌
为避免权限问题, 使用管理员账号生产令牌 记住令牌, 只会显示这一次

# 修改Scanner配置文件
root@0f997b196687:/#  vim /usr/local/sonar-scanner-cli-4.2.0.1873-linux/conf/sonar-scanner.properties
# sonar server 服务地址
sonar.host.url=http://192.168.3.235:9000/
# 上一步生产的 sonar tonken
sonar.login=10c0839a8286ab71fdda56f19c9a0bd79e336074

4、配置CICD流水线自动测试
  • 在首页项目中找到使用Git Lab CI 点击之后,会出现使用GitLab CI分析项目的标题,下面一共有三个步骤,做完就可以自动化测试了:

    1. 设置项目编码
    		我们使用Maven技术构建项目,选择使用Maven构建,然后在项目的根目录下的pom.xml文件中填入以下配置:
    	<properties>
            <sonar.projectKey>zhaoshijie_sonarqube_AYFvyLxaLJ9wN2zzMEL5</sonar.projectKey>
            <sonar.qualitygate.wait>true</sonar.qualitygate.wait>
        </properties>
    
    2. 添加环境变量
    		在GitLab中主界面左侧选项栏,点击设置,选择CICD,打开里边的变量,然后将SonarQube中的键与值填入GitLab中即可
    
    3. 创建或修改配置文件
    		到此步,SonarQube会生成一段简单的流水线job可以添加到gitlab项目下的.gitlab-ci.yml中
    cache:
      paths:
        - target/
    
    stages:
      - test
        
    sonarqube-check: 
      stage: test
      tags: 
        - test
      variables: 
        SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
        GIT_DEPTH: "0"
      cache: 
        key: "${CI_JOB_NAME}"
        paths: 
          - .sonar/cache
      script: 
        - mvn verify sonar:sonar
      allow_failure: true
      only: 
        - dev
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值