sonarqube与gitlab集成

实现逻辑:提交代码后,gitlab中CI执行,对代码进行静态扫描,将扫描结果同步到Sonarqube。

服务端安装环境

  1. centos 7
  2. gitlab-ce-14.0.0-ce.0.el7.x86_64(已安装,访问地址 http://1.1.1.2:8888)
  3. gitlab-runner-14.0.0_amd64 (安装在gtilab服务器上,建议保持版本一致)
  4. sonar-scanner-cli-4.6.2.2472-linux (安装在gitlab服务器上)
  5. git 2.31.1 (gitlab服务器上,centos7自带1+的版本,需要升级,否则后续报错)
  6. sonarqube 9.0(已安装,访问地址 http://1.1.1.1:9000)

gitlab-runner的安装配置

官方安装指导参考 Install GitLab Runner manually on GNU/Linux | GitLab

离线安装方式:下载地址 GitLab Runner bleeding edge releases | GitLab

选择对应平台的文件后放到服务器上,执行安装命令 yum install gitlab-runner_amd64.rpm

安装完成后执行注册,命令  gitlab-runner register

根据提示需要提供gitlab的服务地址,gitlab-ci的Token(登录gitlab系统后,进入项目-设置-CI/CD-Runner选项展开可找到),还需提供的信息有 description(这个runner的描述信息),tag-list(标签,gilab-ci配置的时候会用到,支持多个,逗号隔开),executor(执行器,这里选shell)

 一步步执行完,注册成功后刷新gitlab页面,就可以看到运行中的runner(点击编辑可进行修改,就是对注册runner时填的信息进行修改)

sonar-scanner的安装配置

下载sonar-scanner,地址 SonarScanner | SonarQube Docs

传到服务器上后,解压到指定目录 unzip sonar-scanner-cli-4.6.2.2472-linux.zip -d /usr/local/,

修改/usr/local/sonar-scanner/conf/sonar-scanner.properties 文件

#Configure here general information about the environment, such as SonarQube server connection details for example
#No information about specific project should appear here

#----- Default SonarQube server
sonar.host.url=http://1.1.1.1:9000
sonar.login=admin 
sonar.password=123456

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

#数据库连接
sonar.jdbc.url=jdbc:postgresql://x.x.x.x:5432/sonarqube
#数据库用户名 
sonar.jdbc.username=sonar 
#数据库密码
sonar.jdbc.password=sonar 

(数据库连接可能不需要,待后续验证)

配置环境变量  vi /etc/profile,在最后添加两行内容

export SONAR_SCANNER_HOME=/usr/local/sonar-scanner
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}

退出(按esc,输入:wq!然后回车),运行 source /etc/profile 使其生效。

运行sonar-scanner -v输出版本号,验证安装正确。

集成

项目根目录新建一个.gitlab-ci.yml文件,内容如下

#定义 stages(阶段),任务根据这里的顺序执行
stages:
  - sonarqube_scan

# 定义job(任务),多个任务分开定义
sonarqube_scan_job:
  #阶段,取自开始的stages
  stage: sonarqube_scan

  #定义该job执行的脚本
  #注意-Dsonar.host.url 是sonarqube服务器地址
  #-Dsonar.login 是sonarqube服务器地址账号
  #-Dsonar.password 是sonarqube服务器地址密码
  #-Dsonar.java.binaries=. sonar4.12版本之后,分析java代码需要提供该参数。
  script:
    - sonar-scanner -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.projectKey=$CI_PROJECT_NAME  -Dsonar.language=java -Dsonar.java.binaries=. -Dsonar.host.url=http://1.1.1.1:9000  -Dsonar.login=admin -Dsonar.password=123456
  #标签,只有这个标签的runner才会执行任务;在gilab-runner注册时填写的tag-list
  tags:
    - sonar
  when: always
  #只有指定的分支提交才会执行
  only:
    - master

代码提交后,到gitlab系统中项目CI/CD>>>作业,就可以看到运行中的任务,点击Status可进入日志窗口

待提示Job succeeded,进入sonarqube系统,即可查看到项目分析结果

gitlab社区版,只能对main/master分支代码进行分析(踩坑点)。

建议gitlab-runner和gitlab保持一致,之前安装runner,注册成功了,但死活没有job输出。

.gitlab-ci.yml的脚本,要有参数 -Dsonar.java.binaries=. 否则报错(踩坑点)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值