首页 > 其他分享 >通过 SonarQube审查gitlab项目上的代码,并实现CI/CD

通过 SonarQube审查gitlab项目上的代码,并实现CI/CD

时间:2023-07-19 15:46:23浏览次数:34  
标签:CI scanner runner SonarQube gitlab 点击 sonarqube sonar

公司想要实现代码的审查功能,例如:代码的安全性,代码的重复性

公司代码是统一推送到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

相关文章

  • Cisco Identity Services Engine (ISE) 3.3 - 思科身份服务引擎
    CiscoIdentityServicesEngine(ISE)3.3-思科身份服务引擎请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCisco现已发布ISE3.3。思科身份服务引擎(ISE)了解和控制网络上的设备和用户利用整个堆栈中的......
  • Cisco SD-WAN (Viptela)
     CiscoSD-WAN(Viptela) 1.  思科SD-WAN融合计划viptela主要产品线有两条:1条,在国外,思科云可直接部署,独立运营团队;1条,在中国viptela不支持思科云方式部署,只支持自建三件套; phase1:   优点:维持Viptela既有产品模式和支持体系。   技术细节:平台,维持既有xEdge;管理......
  • docker cig
    DockerCIG在当今软件开发领域,使用容器化技术是一种非常流行的方式来打包、部署和运行应用程序。而Docker就是这个领域中最受欢迎的容器化平台之一。本文将为您介绍DockerCIG(容器镜像构建、分发和运行)的概念、原理和实践。DockerCIG是什么?DockerCIG是Docker技术栈中的一个重......
  • DLMS Activity Calendar CIMA / SIERRA
    www.daq-iot.com [email protected]__________________________________________________________1.1 ActivityCalendarTheactivitycalendarclassistypicallyusedtohandledifferenttarifficationstructures.Itisadefinitionofscheduledactionsinsi......
  • GitLab + Jenkins + Docker 本地自动化部署
    GitLab+Jenkins+Docker本地自动化部署原创 贺大官人 猿起猿进 2023-07-1215:51 发表于浙江 GitLab+ Jenkins+ Docker+ Nginx 前端自动化部署 注GitLab 本地化部署——前端代码版本管理Docker+ Nginx 本地容器化部署前端项目——需手动上传......
  • hdu Circular Area
    计算两圆相交的面积。参考文章:http://blog.sina.com.cn/s/blog_850498e20100w6fq.html  #include<iostream>#include<cstdio>#include<cstring>#include<cmath>usingnamespacestd;#defineINF0x3fffffff#defineMAXN100001#definepiacos(-1.0)#......
  • Makefile:162:recipe for target ‘xxx.o‘ failed!
    Q:使用makefile对工程进行编译的时候,出现指定报错:Makefile:162:recipefortarget‘xxx.o‘failed!A:该问题报错的意思是缺少依赖。根本问题是由于某个错误,导致过程文件xxx.o无法正常编译成功(makefile中最终目标文件的编译需要依赖过程目标文件xxx.o,而过程目标文件xxx.......
  • SonarQube代码质量管理的开源平台
    CI/CD流水线完善计划,增加代码质量检查作业,在开发代码合入前提前发现不安全问题,因此引入代码质量检测-SonarQube服务。一、SonarQube是什么?Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成......
  • Cisco交换机常见安全攻击
    Cisco交换机常见安全攻击MAC地址泛洪使用网络攻击工具可以执行MAC泛洪。网络入侵工具以大量无效的源MAC地址泛洪攻击交换机,直到MAC地址表充满。DHCP欺骗攻击要防止DHCP攻击,可使用Ciscocatalyst交换机上的DHCP侦听和端口安全性功能。下面步骤说明如何在CiscoIOS交换机上......
  • 如何重置/重新启动PCIe设备
    其中DDDD.BB.DD.F= Domain:Bus:Device.Function方法一:1.首先移除pcie设备echo1>/sys/bus/pci/devices/AAAA:BB:CC.D/remove其中AAAA:BB:CC.D为bus-info,意思分别为Domain:Bus:Device.Function2.重新添加pcie设备echo1>/sys/bus/pci/rescan方法二:直接reset对应的pci......