公司想要实现代码的审查功能,例如:代码的安全性,代码的重复性
公司代码是统一推送到gitlab上,公司项目后端又是基于Djingo架构
故使用SonarQube
SonarQube组件包含:
- SonarQube Server:sonarqube服务端,接受客户端扫描报告
- SonarQube Database:ES/及数据库引擎oracle,postgresql,mssql
- SonarQube Plugins:可以后期在sonarqube服务端安装插件
- SonarQube Scanner:安装在客户端扫描工具
一、先安装SonarQube Server,
这里为了方便,所以通过docker安装,
先拉取镜像
docker pull sonarqube
启动容器
docker run -d --name sonarqube -p 9002:9000 sonarqube
然后我们在浏览器访问
http://ip:90002
如图所示,我们耐心等待下
默认用户名和密码都为admin
输入用户名和密码后,由于首次登录会让修改密码
依次输出原先密码,设置新密码,确认密码
因为公司使用的gitlab,所以这里选择gitlab
然后会出现这个界面
会让输出名字,gitlab的url,以及gitlab的token
关于gitlab的安装部署,可以参考这篇博客:https://www.cnblogs.com/likecoke/p/17564998.html
这里就不详细说明了
依次填写下信息
名字自己取
我这里写的是demo
gitlab的url为
http://ip:7002/api/v4
注意:http://ip:7002这个地址为你的gitlab的项目访问地址,需再后面加上/api/v4
gitlab的token
需要登录到gitlab的项目地址里,去找下
登录进来后,点击右上角的头像选择偏好设置
注意我这里已经将gitlab的语言设置为中文了
如果不会设置成中文的话,也可以参考下这篇博客:https://www.cnblogs.com/likecoke/p/17564998.html
然后点击左边的访问令牌,创建一个token
先输出令牌名称,再选择下到期时间,最后最好都勾上选项
然后我们往下翻,选择创建个人访问令牌
然后我们再回到最上面,复制这个token,一定要记住,一定要记住,一定要记住
然后我们再返回到sonarqube的web页面,输入刚刚复制的token
点击save configuration
会跳转到这个页面,然后我们再输入刚刚复制的token
点击save,然后我们会看到自己在gitlab上的项目
二、安装SonarQube Scanner
这个SonarQube Scanner是安装部署到gitlab的runner上
gitlabrunner如何安装部署,可以搜索下其他人写的博客
wget一下安装包
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
解压压缩包
unzip sonar-scanner-cli-4.0.0.1744-linux.zip
得到一个sonar-scanner-4.0.0.1744-linux文件夹,然后修改下文件名
mv sonar-scanner-4.0.0.1744-linux sonar-scanner
添加到PATH里
cat > /etc/profile.d/sonar-scanner.sh <<EOF
export PATH=$PATH:/home/data/sonar-scanner/bin EOF
EOF
注意:/home/data/sonar-scanner为服务器上sonar-scanner文件夹实际的存储路径
立即生效下
source /etc/profile.d/sonar-scanner.sh
测试是否成功安装
sonar-scanner -h
三、将sonarqube的web界面汉化
从官网下载中文的jar包
网址:https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-10.1
下载第一个jar包
下载后,将jar包上传至服务器上,因为sonarqube是通过docker安装的,所以需要将jar包拷贝至sonarqube容器里
先进入到sonarqube容器里,创建下文件夹
docker exec -it sonarqube /bin/bash
mkdir -p /opt/sonarqube/extensions/plugins
然后退出容器
exit
将sonar-l10n-zh-plugin-10.1.jar文件拷贝到sonarqube容器里的/opt/sonarqube/extensions/plugins文件夹下
docker cp sonar-l10n-zh-plugin-10.1.jar sonarqube:/opt/sonarqube/extensions/plugins
重启sonarqube容器
docker restart sonarqube
刷新下sonarqube的web界面或退出重新登录,发现已经汉化成功
四、配置项目
登录到sonarqube网址里
依次点击项目,来自gitlab
添加需要审查gitlab项目上的代码
这里选择的demo项目,然后点击设置
跳转到该页面
根据实际环境,选择对应的配置即可
点击创建
接下来会跳转到该页面,配置CI
选择 使用gitlabCI
会出现这个页面,根据提示,我们去配置
应该先添加环境变量
登录到gitlab网站上,找到demo项目
依次点击左边的设置,CI/CD
然后找到变量,点击展开
点击添加变量
键填写sonarqube上的第一个
也就是图片中红色框住的内容
值的话,点击创建令牌,
然后选择下过期时间,选择完后,点击创建
会自动生成值,将该值复制记住,将该值复制记住,将该值复制记住
然后点击继续
将刚刚复制好的值,贴到这里来
并将下面的勾选中的保护变量,去掉
然后添加变量
再添加一个变量
键和值分别写图片上的这两个内容,也就是SONAR_HOST_URL和http://192.168.1.56:9002
将下面的勾选中的保护变量,去掉
然后添加变量
在gitlab的web界面上添加完两个变量后
返回至sonarqube的web界面
点击继续
会跳转到该页面
根据图片中的提示
1.使用什么构建技术?
我这里选择的是其他,因为公司使用的python
2.在仓库中创建 sonar-project.properties文件,粘贴以下代码:
sonar.projectKey=root_demo_AYlsjPyXkVuXCVURLKSY
sonar.qualitygate.wait=true
这里需要返回至gitlab的web界面
选择demo项目后
点击仓库,选择新建文件
把代码占进来
sonar.projectKey=root_demo_AYlsjPyXkVuXCVURLKSY
sonar.qualitygate.wait=true
sonar.host.url=http://192.168.1.56:9002
注意最后一行是我自己添加的,因为gitlab和sonarqube没有部署在同一台服务器上 最好加上最后一行的配置
然后填写file name
写成sonar-project.properties
最后点击 commit changes
3.使用以下内容创建或更新你的.gitlab-ci.yml文件。
sonarqube-check:
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner
allow_failure: true
rules:
- if: $CI_COMMIT_BRANCH == 'v2'
这里需要在gitlab上配置下cI/cd
依次点击ci/cd 编辑器 创建新的ci/cd流水线
将原先的.gitlab-ci.yml配置文件里的内容全部删掉,因为原先里的内容是模板
再把sonarqube上web界面上给的.gitlab-ci.yml配置文件粘进去
如图所示:
然后,我们需要在script下修改下配置
将第一次添加到gitlab变量的token写到这里
也就是这个token
如果忘记了token,去ci/cd的变量里找下
将原先
script: - sonar-scanner修改成
script: - sonar-scanner -Dsonar.login=sqp_8794c0b7c7e3b573806a5827b6e3fb51be1b00d8最终效果是这样:
然后点击下面的添加或者是提交更改
先不管ci/cd下刚刚提交的流水线,会报错,因为没有配置runner
接下来需要配置下gitlab上的runner
依次点击设置 ci/cd Runner 展开
需要注册下runner
切换到部署gitlab,gitlab-runner的服务器上
注意以下步骤是基于服务器已安装上gitlab-runner
首先输入注册命令
gitlab-ci-multi-runner register
然后依次输入gitlab的访问地址和注册令牌
这两个信息都在runner里有
然后
Enter a description for the runner:
[master]:
Enter tags for the runner (comma-separated):
Enter optional maintenance note for the runner:
这四个都按回车,走默认的,不修改
最后
Enter an executor: ssh, virtualbox, kubernetes, docker, docker-windows, parallels, shell, docker-autoscaler, docker+machine, instance, custom:
输入
shell
然后编辑 /etc/gitlab-runner/config.toml配置文件
vim /etc/gitlab-runner/config.toml
找到最后两行,把这两行的内容删除掉
再新加一行内容为:clone_url = "http://192.168.1.55:7002/"
整体修改如下:
保存退出
重启下gitlab-runner
gitlab-runner restart
返回至gitlab的web页面,刷新下网页,可以看到runner已经成功配置上了
如图所示
最后再返回sonarqube的web页面,点击完成教程
然后会出现这个
配置调通后,最终效果是这样的
标签:CI,scanner,runner,SonarQube,gitlab,点击,sonarqube,sonar From: https://www.cnblogs.com/likecoke/p/17565765.html